2013-09-20 1 views
0

У меня есть структуру XML, как это:PHP - не получить все XML дочерних узлов определенного типа

<root> 
    <parent> 
     <child name='Child1' /> 
     <child name='Child2' /> 
     <subparent> 
      <child name='Child3' /> 
     </subparent> 
    </parent> 
    <child name='Child4' /> 
<root> 

Использование PHP simplexml Я пытаюсь O получить все «ребенка» узлов, независимо от того, на какой уровень , и я хотел бы знать, есть ли для этого быстрый способ, вместо сканирования каждого узла XML.

ответ

3

Конечно, все, что вам нужно сделать, это использовать xpath() запрос на вашем XML:

$xml = simplexml_load_string($xml); 

foreach($xml->xpath('//child') as $child) { 
    $attributes = $child->attributes(); 
    echo $attributes['name'] . "\n"; 
} 

Вы можете видеть из this demo, что это печатает:

Child1 
Child2 
Child3 
Child4