c# - XPathExpression 添加排序

标签 c# xml xpath

是否可以使用 XPathExpression.AddSort 对元素进行排序,而不仅仅是对节点进行排序?

如果我将 MSDN 文档中的示例代码更改为 XPathExpression.AddSort一点所以我请求一个元素而不是整个节点排序顺序不起作用。

var doc = new XPathDocument("contosoBooks.xml");
var nav = doc.CreateNavigator();

var expr = nav.Compile("/bookstore/book/title");

expr.AddSort("title", XmlSortOrder.Descending,
               XmlCaseOrder.None, "", XmlDataType.Number);

var iterator = nav.Select(expr);
while (iterator.MoveNext())
{
    Console.WriteLine(iterator.Current);
}

我希望这个输出:
The Gorgias
The Confidence Man
The Autobiography of Benjamin Franklin

但输出是这样的:
The Autobiography of Benjamin Franklin
The Confidence Man
The Gorgias

这是供您引用的xml文件
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
    <title>The Autobiography of Benjamin Franklin</title>
    <author>
      <first-name>Benjamin</first-name>
      <last-name>Franklin</last-name>
    </author>
    <price>8.99</price>
  </book>
  <book genre="novel" publicationdate="1967-11-17" ISBN="0-201-63361-2">
    <title>The Confidence Man</title>
    <author>
      <first-name>Herman</first-name>
      <last-name>Melville</last-name>
    </author>
    <price>11.99</price>
  </book>
  <book genre="philosophy" publicationdate="1991-02-15" ISBN="1-861001-57-6">
    <title>The Gorgias</title>
    <author>
      <name>Plato</name>
    </author>
    <price>9.99</price>
  </book>
</bookstore>

最佳答案

它看起来像一个重复的问题 - 请参阅 XPathExpression AddSort fails

所以在你的情况下,代码必须是这样的:

var expr = nav.Compile("/bookstore/book");

expr.AddSort("title", XmlSortOrder.Descending,
           XmlCaseOrder.None, "", XmlDataType.Number);

或者
var expr = nav.Compile("/bookstore/book/title");

expr.AddSort(".", XmlSortOrder.Descending,
           XmlCaseOrder.None, "", XmlDataType.Number);

关于c# - XPathExpression 添加排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7805637/

相关文章:

java - 以高效的方式将 XML 解析为 JAVA POJO

c# - XmlDocument 和缓慢的模式处理

java - 使用 Webdriver 在网页中查找输入标签,并 driver.findElements 抛出异常。为什么?

XPath:选择具有显式 'xmlns' 属性的节点

php - 使用 Xpath 和数据属性提取内容

c# - .Net Core 5 应用程序是如何组织/结构化的?或者如何将 n 层类库项目添加到 .Net 核心 Asp.Net 解决方案?

c# - 将 List.FindAll() 与 lambda 一起使用的 VB.NET 语法是什么?

c# - C++ 中的 <map> 的 C# 等价物是什么?

python - ElementTree的iterparse() XML解析错误

c# - Windows 8 - 开始动画?