我需要查询PHP中的XML字符串,因为我知道我要查找的节点的名称,但我可能不一定知道节点的路径。
我想我可以用xpath做到这一点,但我无法弄清楚如何设置一个相对路径来查看文档中的任何位置,是否有人能指出我正确的方向。
我目前正试图用simpleXML来实现这个目标,但如果有更好的方法,我很乐意听到它。
答案 0 :(得分:11)
不要使用正则表达式来解析XML!
xpath中的后代(双斜杠)运算符将搜索所有后代的匹配项。
$matches = $simplexmlelementobject->xpath('//nameOfElement');
以上等同于DOM方法getElementsByTagName
如果您对元素的位置有一个大概的了解,可以使用后代运算符在某个节点下搜索:
$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');
如果您需要使用DOMDocument
而不是SimpleXML
,则可以根据需要使用DOMXPath
对象发出xpath指令。 (留给读者练习。)
答案 1 :(得分:1)
虽然我认为使用simplexml的xpath对于此非常简单有效,但是如果您还有更多工作要做,您可能会发现其中一些替代方法比较熟悉,因为它们使用dom或css选择器而不是xpath。
http://code.google.com/p/phpquery/
http://www.php.net/manual/en/domelement.getelementsbytagname.php
答案 2 :(得分:-1)