Xerces-C 中的 XPath 支持
我支持使用 Xerces-C 进行 XML 解析的旧版 C++ 应用程序。 我已经被 .Net 宠坏了,并且习惯使用 XPath 从 DOM 树中选择节点。
有什么方法可以访问 Xerces-C 中一些有限的 XPath 功能吗? 我正在寻找类似 selectNodes("/for/bar/baz") 的东西。 我可以手动完成此操作,但相比之下,XPath 非常好。
I am supporting a legacy C++ application which uses Xerces-C for XML parsing. I've been spoiled by .Net and am used to using XPath to select nodes from a DOM tree.
Is there any way to get access some limited XPath functionality in Xerces-C? I'm looking for something like selectNodes("/for/bar/baz"). I could do this manually, but XPath is so nice by comparison.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
请参阅 xerces 常见问题解答。
http://xerces.apache.org/xerces-c /faq-other-2.html#faq-9
Xerces-C++ 支持 XPath 吗?
No.Xerces-C++ 2.8.0 和 Xerces-C++ 3.0.1 仅具有部分 XPath 实现,用于处理架构身份约束。 要获得完整的 XPath 支持,您可以参考 Apache Xalan C++ 或其他开源项目(例如 Pathan)。
然而,使用 xalan 做您想做的事情相当容易。
See the xerces faq.
http://xerces.apache.org/xerces-c/faq-other-2.html#faq-9
Does Xerces-C++ support XPath?
No.Xerces-C++ 2.8.0 and Xerces-C++ 3.0.1 only have partial XPath implementation for the purposes of handling Schema identity constraints. For full XPath support, you can refer Apache Xalan C++ or other Open Source Projects like Pathan.
It's fairly easy to do what you want using xalan however.
以下是使用 Xerces 3.1.2 进行 XPath 评估的工作示例。
示例 XML
C++
编译并运行(假设安装了标准 xerces 库以及名为 xpath.cpp 的 C++ 文件)
结果
Here is a working example of XPath evaluation with Xerces 3.1.2.
Sample XML
C++
Compile and run (assumes standard xerces library installation and C++ file named xpath.cpp)
Result
根据 常见问题解答,Xerces-C支持部分 XPath 1 实现:
您使用 DOMDocument::evaluate() 来评估表达式,然后返回 DOMXPathResult。
According to the FAQ, Xerces-C supports partial XPath 1 implementation:
You use DOMDocument::evaluate() to evaluate the expression, which then returns a DOMXPathResult.