我需要在PHP中查询XML字符串我知道我正在寻找的节点的名称,但我可能不一定知道节点。使用PHP simpleXML来找到一个节点我知道它的名字,但不知道它驻留在哪里
我想我可以用xpath做到这一点,但我无法弄清楚如何设置一个相对路径来查看文档中的任何地方,有人能指引我朝着正确的方向。
我目前正试图用simpleXML实现这个目标,但如果有更好的方法做到这一点,我很乐意听到它。
我需要在PHP中查询XML字符串我知道我正在寻找的节点的名称,但我可能不一定知道节点。使用PHP simpleXML来找到一个节点我知道它的名字,但不知道它驻留在哪里
我想我可以用xpath做到这一点,但我无法弄清楚如何设置一个相对路径来查看文档中的任何地方,有人能指引我朝着正确的方向。
我目前正试图用simpleXML实现这个目标,但如果有更好的方法做到这一点,我很乐意听到它。
不要使用正则表达式来解析XML!
在xpath中的后代(双斜线)运算符将搜索所有后代以进行匹配。
$matches = $simplexmlelementobject->xpath('//nameOfElement');
以上等同于DOM方法getElementsByTagName
如果你有其中的元素的生活,你可以使用后代运营商总体思路寻找低于某一节点:
$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');
如果您需要使用DOMDocument
而不是SimpleXML
,则可以根据需要使用DOMXPath
对象发出xpath指令。 (作为读者的练习)
虽然我认为使用simplexml的xpath非常简单有效,但如果您有更多的工作要做,您可能会发现其中一些更为熟悉的替代方案,因为它们使用dom或css选择器而不是xpath。
http://code.google.com/p/phpquery/
http://www.php.net/manual/en/domelement.getelementsbytagname.php
这有效。另请参阅SimpleXMLElement :: registerXPathNamespace,如果xml元素名称是命名空间的,例如 –
goat