Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP simpleXML查找我知道名称但不知道其所在位置的节点_Php_Xml_Xpath_Simplexml - Fatal编程技术网

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

使用PHP simpleXML查找我知道名称但不知道其所在位置的节点,php,xml,xpath,simplexml,Php,Xml,Xpath,Simplexml,如果我知道要查找的节点的名称,但可能不一定知道节点的路径,那么我需要在PHP中查询XML字符串 我想我可以用xpath做到这一点,但我无法确定如何设置一个相对路径来查看文档中的任何地方,有人能给我指出正确的方向吗 我目前正试图用simpleXML实现这一点,但如果有更好的方法,我很想听听。我不确定XML结构到底是什么样的,但我用它来帮助解决XML解析中遇到的一些问题。它似乎解释了基本原理,并始终参考 我希望这会有所帮助,但是如果没有看到完整的问题,我无法完全回答这个问题。不要使用正则表达式来解析

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

我想我可以用xpath做到这一点,但我无法确定如何设置一个相对路径来查看文档中的任何地方,有人能给我指出正确的方向吗


我目前正试图用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,例如