【发布时间】:2021-03-04 16:56:29
【问题描述】:
给定一个 XML 文档和一个 XPath 表达式,我想创建一个新文档,其中包含原始文档的所有节点除了由 XPath 表达式选择的节点之外,有效地给出减法滤波器的结果。
我的想法是使用xmlXpathEvalExpression() 函数,并且对于根文档树中的每个节点,复制该节点,除非该节点与返回的xmlNodeSet 匹配。但是,libxml2 没有给出关于如何或是否可以测试节点是否相等的提示。
您是否应该比较指向返回集中节点的指针?还是应该比较给定的节点名称/命名空间?
【问题讨论】:
-
AFAIK,XPath 结果集中的节点指针指向查询的 XML 文档的原始节点。所以你应该能够进行简单的指针比较。
-
这就是我一直在想的,但是文档中没有任何关于它的内容,也没有人直接说过,所以我担心我会使用一些可能会改变的实现细节未来。
-
XPath 旨在用于搜索文档,因此结果集指向节点的 副本 是没有意义的,这只会被浪费开销,而是指向 original 节点。我认为这种情况不会随时改变。