有什么办法在XPath DOM编程中使用System.Xml
来运行selectNodes
(XPATH)的排序参数?用XPath排序 - 不是XSL
例如,使用以下XML和程序写入与文档相同顺序的值(降序)。有没有使用XPath按升序获取值的方法?
注意。当然,你可以预先在XSL中进行排序,但是我需要在循环遍历它们时更新这些值。由于XSL给我一个排序的副本的元素,不是实际的元素本身,我不能使用XSL。
这里的一些XML,程序out输出
public static void Main() {
XmlDocument xml = new XmlDocument();
xml.Load("t.xml");
// SelectNodes gets in document order, but I want in
// ascending order based on @value
foreach(XmlNode ndNode in xml.SelectNodes("/xml/ele")) {
Console.WriteLine(ndNode.Attributes["value"].Value);
}
}
这里的最后文件输出(降序)的XML
<xml>
<ele value='3' test='Third'/>
<ele value='2' test='Second'/>
<ele value='1' test='First'/>
</xml>
秩序。我想要一个XPath以升序返回节点。
3
2
1
PS,我在Visual Studio .NET 2008 3.5
从您的示例中,我看不出为什么XSL不适合您。原始元素究竟是什么,意味着你必须修改它们? –
XPath 2.0具有“反向”功能。 –
嗨保罗,澄清,我需要更新循环中的元素。由于我迭代每个元素包含一个有效和有效期限。我需要按生效日期排序的元素,并将到期日期设置为下一个生效日期。当然,我想可以通过输出文档的副本在XSL中完成,但我正在寻找更有效的方法。 –