Я пытаюсь найти, есть ли у определенного узла братья и сестры, и если да, я хотел бы знать, что это за братья и сестры.
Это возможно?
Я пытаюсь найти, есть ли у определенного узла братья и сестры, и если да, я хотел бы знать, что это за братья и сестры.
Это возможно?
Чтобы выбрать братьев и сестер узла, вы должны использовать соответствующую ось XPath. Вот как выбрать всех братьев и сестер узла (игнорируя сам узел)
$siblings = $node->xpath('preceding-sibling::* | following-sibling::*');
Это все, что вам нужно сделать.
Я думаю, что лучше всего использовать xpath:
<?php
$string = <<<XML
<?xml version='1.0'?>
<document>
<title>Forty What?</title>
<from>Joe</from>
<to>Jane</to>
<body>
I know that's the answer -- but what's the question?
</body>
</document>
XML;
function get_all_siblings(SimpleXMLElement $node)
{
return $node->xpath('preceding-sibling::* | following-sibling::*');
}
$xml = simplexml_load_string($string);
foreach (get_all_siblings($xml->to) as $e)
echo $e->getName()."\n";
?>
Результат:
title
from
body
($node != $e)
, так как это сравнение всегда будет истинным, даже если обе переменные представляют один и тот же узел.
- person Josh Davis; 01.02.2010
$xml = new SimpleXMLElement($xmlstr);
$xmlNode = $xml->xpath('root/yourNodeName');
$nodeCount = count($xmlNode);
Не уверен, что это все еще полезно для вас