使用PHP simpleXML查找节点我知道它的名称但不知道它所在的位置

Tob*_*oby 2 php xml xpath simplexml

我需要查询PHP中的XML字符串我知道我正在寻找的节点的名称,但我可能不一定知道节点的路径.

我想我可以用xpath做到这一点,但我无法弄清楚如何设置一个相对路径来查看文档中的任何位置,是否有人指出我正确的方向.

我目前正在尝试使用simpleXML来实现这一点,但如果有更好的方法,我很乐意听到它.

Fra*_*ila 11

不要使用正则表达式来解析XML!

xpath中的后代(双斜杠)运算符将搜索所有后代的匹配项.

$matches = $simplexmlelementobject->xpath('//nameOfElement');
Run Code Online (Sandbox Code Playgroud)

以上等同于DOM方法 getElementsByTagName

如果您对元素的位置有一个大概的了解,可以使用后代运算符在某个节点下搜索:

$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');
Run Code Online (Sandbox Code Playgroud)

如果需要使用DOMDocument而不是SimpleXML,则可以DOMXPath根据需要向对象发出xpath指令.(留给读者练习.)

  • 这有效.另外,如果xml元素名称是命名空间,请参阅SimpleXMLElement :: registerXPathNamespace,例如<Name:Toby> (2认同)