使用 PHP simpleXML 查找一个我知道名称但不知道其所在位置的节点
如果我知道要查找的节点的名称,但我可能不一定知道该节点的路径,我需要在 PHP 中查询 XML 字符串。
我想我可以使用 xpath 做到这一点,但我无法弄清楚如何设置相对路径来查看文档中的任何位置,有人可以指出我正确的方向吗?
我目前正在尝试使用 simpleXML 来实现此目的,但如果有更好的方法来实现此目的,我很乐意听到。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
不要使用正则表达式来解析 XML!
xpath 中的后代(双斜杠)运算符将在所有后代中搜索匹配项。
上面相当于 DOM 方法
getElementsByTagName
如果你对元素所在的位置有一个大概的了解,你可以使用后代运算符在某个节点下面进行搜索:
如果你需要使用
DOMDocument如有必要,您可以使用
DOMXPath
对象发出 xpath 指令,而不是SimpleXML
。 (留给读者作为练习。)Don't use regexes to parse XML!
The descendant (double-slash) operator in xpath will search all descendants for a match.
The above is equivalent to the DOM method
getElementsByTagName
If you have a general idea of where the element lives, you can use the descendant operator to search below a certain node:
If you need to use
DOMDocument
instead ofSimpleXML
, you can issue xpath instructions with theDOMXPath
object if necessary. (Left as an exercise for the reader.)虽然我认为使用 simplexml 的 xpath 确实非常简单且有效,但如果您还有更多事情要做,您可能会发现其中一些替代方案对您来说更熟悉,因为它们使用 dom 或 css 选择器而不是 xpath。
http://code.google.com/p/phpquery/
http://querypath.org/
http://www.php.net/manual/en/domelement.getelementsbytagname.php
While I think using simplexml's xpath is really easy and effective for this, in case you have more to do, you might find some of these alternatives more familiar to you, as they use the dom, or css selectors instead of xpath.
http://code.google.com/p/phpquery/
http://querypath.org/
http://www.php.net/manual/en/domelement.getelementsbytagname.php
我不确定 XML 结构到底是什么样子,但我使用过这个 博客文章帮助解决我在 XML 解析中遇到的一些问题。它似乎解释了基础知识,并且始终参考 php.net
我希望这有帮助,但没有看到完整的问题,我无法完全回答问题。
i am not sure exactly what the XML structure looks like but i've used this blog post to help out with some issues i've run into with XML parsing. it appears to explain the basics, plus always refer to php.net
i hope this helps, but without seeing the full issue, i can't fully answer the question.