Выберите узел xml по атрибуту в php

Как найти значение узла, зная значение атрибута без прохождения каждого дочернего элемента и каждого атрибута / значения?

$dom = new DOMDocument; $dom->load('test.xml'); $rows = $dom->getElementsByTagName('row'); foreach ($rows as $row) { $header = VALUE OF <field name="header"> $text = VALUE OF <field name="text"> } 

XML:

 <resultset> <row> <field name="item">2424</field> <field name="header">blah blah 1</field> <field name="text" xsi:nil="true" /> ... </row> <row> <field name="item">5321</field> <field name="header">blah blah 2</field> <field name="text">some text</field> ... </row> </resultset> 

Самое простое – использовать DOMXPath::query docs

Следующий код находит все узлы <field> узлах <row> , у которых атрибут имени равен «header»:

 $dom = new DOMDocument; $dom->loadXML($str); // where $str is a string containing your sample xml $xpath = new DOMXPath($dom); $query = "//row/field[@name='header']"; $elements = $xpath->query($query); foreach ($elements as $field) { echo $field->nodeValue, PHP_EOL; } 

Используя образец xml, который вы предоставляете, приведенные выше выходы:

 blah blah 1 blah blah 2