Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将XPath表达式按文档顺序排序_C#_Xml_Xpath - Fatal编程技术网

C# 将XPath表达式按文档顺序排序

C# 将XPath表达式按文档顺序排序,c#,xml,xpath,C#,Xml,Xpath,我需要针对一个文档计算多个XPath表达式。文档很大,所以我们使用流式解析器。XPath表达式只返回节点的值。我需要对XPath表达式进行排序,以使它们符合文档顺序(因为一旦我对表达式求值,下一个表达式的求值将从文档中找到最后一个值的点开始)。我有文档的模式,但我不确定如何使用它来建立顺序 如果有必要的话,我正在使用C#with.net4。如果有人能给我指出正确的方向,我将不胜感激 后续:正如Dimitre所指出的,这在完整XPath中是不可能的。将表达式限制为,我能够构造一个树,每个节点包含元

我需要针对一个文档计算多个XPath表达式。文档很大,所以我们使用流式解析器。XPath表达式只返回节点的值。我需要对XPath表达式进行排序,以使它们符合文档顺序(因为一旦我对表达式求值,下一个表达式的求值将从文档中找到最后一个值的点开始)。我有文档的模式,但我不确定如何使用它来建立顺序

如果有必要的话,我正在使用C#with.net4。如果有人能给我指出正确的方向,我将不胜感激


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

如果不对XPath表达式设置一些限制,这是不可能实现的

例如,任何包含轴
子代:
子代或自身:
祖先:
祖先或自身:
前面:
,的XPath表达式,
following::
甚至前面的同级轴:和后面的同级轴:——可能需要完全读取XML文档

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