我有xml,如:
<root xmlns="urn:test:apis:baseComponents">
<books>
<book>
<name>50 shades of grey</name>
</book>
</books>
<disks>
<disk>
<name>Britney Spears</name>
</disk>
</disks>
</root>
这样的php代码:
$xml = new SimpleXMLElement($xml);
$books = $xml->books;
$disks = $xml->disks;
$disks->registerXPathNamespace('x', 'urn:test:apis:baseComponents');
$books->registerXPathNamespace('x', 'urn:test:apis:baseComponents');
$b_names = $books->xpath('//x:name');
b_names包含带有2个值而不是1的数组。首先保存books-&gt; book-&gt; name,second保存disk-&gt; disk-&gt; name。
你能解释一下我做错了什么,怎么才能找到只有一个元素的孩子?
我使用xpath而不是使用SimpleXMLElement手动取值的原因是我不知道要提前搜索的值是什么值。
答案 0 :(得分:1)
使用\
搜索$books->xpath('.//x:name')
变量的后代,而不是根节点/文档节点的后代(路径$books
的后代)。