2015-11-03 38 views
1

某些XML子元素的所有孩子我有XML这样的:获取使用的SimpleXMLElement和XPath

<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手动设置值的原因是我不知道我想提前搜索哪个值。

回答

1

使用$books->xpath('.//x:name')来搜索$books变量的后代,而不是根节点/文档节点的后代(其路径为//x:name)。

+0

就这么简单。谢谢! – eatmypants