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

发布于 2024-12-19 06:18:09 字数 188 浏览 0 评论 0 原文

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

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

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

I need to query an XML string in PHP were I know the names of the nodes I am looking for but I might not necessarily know the path to the node.

I think I can do this with xpath but I can't work out how to set up a relative path to look anywhere in the document, could someone point me in the right direction.

I am currently trying to acheive this with simpleXML, but if there is a better way of doing this I would love to hear it.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

霓裳挽歌倾城醉 2024-12-26 06:18:09

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

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

$matches = $simplexmlelementobject->xpath('//nameOfElement');

上面相当于 DOM 方法 getElementsByTagName

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

$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');

如果你需要使用 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.

$matches = $simplexmlelementobject->xpath('//nameOfElement');

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:

$matches = $simplexmlelementobject->xpath('someparentelement[@conditionalattr=something]//nameOfDescendantElementYouWant');

If you need to use DOMDocument instead of SimpleXML, you can issue xpath instructions with the DOMXPath object if necessary. (Left as an exercise for the reader.)

ゞ花落谁相伴 2024-12-26 06:18:09

虽然我认为使用 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

我不在是我 2024-12-26 06:18:09

我不确定 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文