C# 将XPath表达式按文档顺序排序
我需要针对一个文档计算多个XPath表达式。文档很大,所以我们使用流式解析器。XPath表达式只返回节点的值。我需要对XPath表达式进行排序,以使它们符合文档顺序(因为一旦我对表达式求值,下一个表达式的求值将从文档中找到最后一个值的点开始)。我有文档的模式,但我不确定如何使用它来建立顺序 如果有必要的话,我正在使用C#with.net4。如果有人能给我指出正确的方向,我将不胜感激C# 将XPath表达式按文档顺序排序,c#,xml,xpath,C#,Xml,Xpath,我需要针对一个文档计算多个XPath表达式。文档很大,所以我们使用流式解析器。XPath表达式只返回节点的值。我需要对XPath表达式进行排序,以使它们符合文档顺序(因为一旦我对表达式求值,下一个表达式的求值将从文档中找到最后一个值的点开始)。我有文档的模式,但我不确定如何使用它来建立顺序 如果有必要的话,我正在使用C#with.net4。如果有人能给我指出正确的方向,我将不胜感激 后续:正如Dimitre所指出的,这在完整XPath中是不可能的。将表达式限制为,我能够构造一个树,每个节点包含元
后续:正如Dimitre所指出的,这在完整XPath中是不可能的。将表达式限制为,我能够构造一个树,每个节点包含元素名和序号位置(它在模式中出现的顺序)。一旦构建了树,我就用XPath遍历它,收集列表中的位置。一旦我有了位置列表,就很容易比较列表并确定相对位置。如果不对XPath表达式设置一些限制,这是不可能实现的 例如,任何包含轴
子代:
,子代或自身:
,祖先:
,祖先或自身:
,前面:
,的XPath表达式,following::
甚至前面的同级轴:和后面的同级轴:——可能需要完全读取XML文档
如果XPath表达式不包含这些轴,则可以按位置步数排列它们(它们也不应包含父级:
或。
),并且可以临时停止计算位置路径数小于当前深度的任何表达式