【问题标题】:Sorting XPath expressions into document order将 XPath 表达式按文档顺序排序
【发布时间】:2023-03-09 09:19:01
【问题描述】:

我需要针对一个文档评估多个 XPath 表达式。文档很大,所以我们使用流式解析器。 XPath 表达式只返回一个节点的值。我需要对 XPath 表达式进行排序,以便它们按文档顺序排列(因为一旦我评估了一个表达式,下一个表达式的评估就会从文档中找到最后一个值的点开始)。我有文档的架构,但我不确定如何使用它来建立订单。

如果这很重要,我正在使用带有 .NET 4 的 C#。如果有人能指出我正确的方向,我将不胜感激!

FOLLOWUP:正如 Dimitre 所指出的,这对于完整的 XPath 是不可能的。将表达式限制为XML Signature Streaming Profile,我能够构造一棵树,每个节点都包含元素名称和序号位置(它在模式中出现的顺序)。一旦我构建了树,我就用 XPath 遍历它,将位置收集到一个列表中。一旦我有了位置列表,就很容易比较列表并确定相对位置。

【问题讨论】:

    标签: c# xml xpath


    【解决方案1】:

    如果不对 XPath 表达式施加一些限制,这是无法实现的

    例如,任何包含坐标轴 descendant::descendant-or-self::ancestor::ancestor-or-self::preceding::following:: 甚至坐标轴 preceding-sibling:: 的 XPath 表达式和following-sibling:: -- 可能需要完整读取 XML 文档。

    如果 XPath 表达式不包含这些轴,您可以按位置步数排列它们(它们也不应该包含 parent::..),并且您可以暂时停止计算位置路径数小于当前深度的任何表达式。

    【讨论】:

      猜你喜欢
      • 2017-08-29
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 2016-10-10
      • 2023-04-03
      • 2014-08-21
      • 2016-08-19
      相关资源
      最近更新 更多