使用PHP simpleXML查找我知道名称但不知道其所在位置的节点
如果我知道要查找的节点的名称,但可能不一定知道节点的路径,那么我需要在PHP中查询XML字符串 我想我可以用xpath做到这一点,但我无法确定如何设置一个相对路径来查看文档中的任何地方,有人能给我指出正确的方向吗使用PHP simpleXML查找我知道名称但不知道其所在位置的节点,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,如果我知道要查找的节点的名称,但可能不一定知道节点的路径,那么我需要在PHP中查询XML字符串 我想我可以用xpath做到这一点,但我无法确定如何设置一个相对路径来查看文档中的任何地方,有人能给我指出正确的方向吗 我目前正试图用simpleXML实现这一点,但如果有更好的方法,我很想听听。我不确定XML结构到底是什么样的,但我用它来帮助解决XML解析中遇到的一些问题。它似乎解释了基本原理,并始终参考 我希望这会有所帮助,但是如果没有看到完整的问题,我无法完全回答这个问题。不要使用正则表达式来解析
我目前正试图用simpleXML实现这一点,但如果有更好的方法,我很想听听。我不确定XML结构到底是什么样的,但我用它来帮助解决XML解析中遇到的一些问题。它似乎解释了基本原理,并始终参考
我希望这会有所帮助,但是如果没有看到完整的问题,我无法完全回答这个问题。不要使用正则表达式来解析XML xpath中的子体(双斜杠)运算符将搜索所有子体以查找匹配项
$matches = $simplexmlelementobject->xpath('//nameOfElement');
上述方法相当于DOM方法getElementsByTagName
如果您对元素的位置有大致了解,则可以使用“子体”操作符在特定节点下搜索:
$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');
如果需要使用
DOMDocument
而不是SimpleXML
,则可以在必要时使用DOMXPath
对象发出xpath指令。(留给读者一个练习)虽然我认为使用simplexml的xpath非常简单有效,但如果您有更多的事情要做,您可能会发现其中一些选项更熟悉,因为它们使用dom或css选择器而不是xpath
不幸的是,没有一个具体的示例,XML可能会更改,但节点名称将保持不变,这就是我为什么要寻找通用解决方案的原因。谢谢你的链接,我现在就看。这很有效。另外,如果xml元素名称是命名空间的,请参见SimpleXMLElement::registerXPathNamespace,例如