Мне нужно прочитать атрибуты "id", но я получаю либо пустые строки, либо строку, содержащую "one", в зависимости от используемого выражения XPath.
Я намеренно использую метод «query», чтобы получить DOMNodeList с узлами, затем я хочу работать с ними.Пожалуйста, проверьте следующий код:
<?php
$xml = '
<ROOT>
<MEMBER id="one" />
<MEMBER id="two" />
</ROOT>
';
$dom = new \DOMDocument('1.0', 'utf-8');
$dom->loadXML($xml);
$xpath = new DOMXpath($dom);
$members = $xpath->query('/ROOT/MEMBER'); // object of class DOMNodeList
foreach ($members as $member) {
echo($dom->saveXML($member)); // displays <MEMBER id="one"/> and <MEMBER id="two"/> as expected
$id = $xpath->evaluate('string(/MEMBER/@id)', $member); // let's read the id attribute
var_dump($id); // returns string(0) "" in both cases - how come?
$id = $xpath->evaluate('string(//MEMBER/@id)', $member); // should make no difference
var_dump($id); // string(3) "one" in both cases
}