我有类似于的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的数组。第一个持有书籍->书籍->名称,第二个持有磁盘->磁盘->名称。
你能解释一下我做错了什么吗?我怎么能找到只有一种元素的孩子?
我使用xpath而不是使用SimpleXMLElement手动获取值的原因是,我不知道要提前搜索的值是什么。
使用$books->xpath('.//x:name')
搜索$books
变量的子代,而不是根节点/文档节点的子代(路径//x:name
执行此操作)。