2013-02-13 68 views
1

我有一个XML文件,我需要从中只提取某些元素。在某些时候,XML文件可以被更新并且完全改变元素出现的顺序 - 但元素包含一个名称=设置。PHP XML如何提取名称=使用simpleXML的元素

<element> 
<sub name='this1'>value</sub> 
<sub name='this2'>value</sub> 
<sub name='this3'>value</sub> 
<sub name='this4'>value</sub>  
</element> 

我需要提取值为说this2和this4。

但是在某个阶段,可能会添加新的子元素,更改顺序。因此,我不能使用:下面

$xml->element->sub[2] 

实施例:

<element> 
<sub name='this0'>value</sub> 
<sub name='this1'>value</sub> 
<sub name='this2'>value</sub> 
<sub name='this3'>value</sub>  
<sub name='this4'>value</sub>  
</element> 

所以子[2]将随后成为this1代替this2。

回答

1

您想要的是XPath查询,例如, $myXml->xpath("/sub[@name=this1]")。在这里了解更多关于Xpath的信息http://php.net/manual/de/simplexmlelement.xpath.php

+0

这就是我所需要的。但是我需要提取元素本身中包含的值。所以'this2'应该是'value' – Rik 2013-02-13 21:19:57

+1

'$ value = current($ myXml-> xpath(“/ sub [@ name = this1]”);'只有当查询只返回单个元素时,休息会丢失。 – 2013-02-13 21:21:51

+0

完美,谢谢 – Rik 2013-02-13 22:32:28

相关问题