【问题标题】:XPath to fetch nodes in descending order of attribute valueXPath 按属性值的降序获取节点
【发布时间】:2014-07-18 18:43:19
【问题描述】:

我有一个以下格式的 XML 节点结构

<comments>
  <comment lastupdated='12/08/2014:08:08:08' moderate='false'>
     <id>user1</id>
     <message>some message</message>
     <replies>
         <comment moderate='false'>
            <id>user2</id>
            <message>some other message</message>
         </comment>
     </replies>
   </comment>
  <comment lastupdated='13/08/2014:12:08:40' moderate='false'>
     <id>user3</id>
     <message>some message</message>
     <replies>
         <comment moderate='false'>
            <id>user1</id>
            <message>some other message</message>
         </comment>
     </replies>
   </comment>
 </comments>

我找到了这个 XML to LINQ 解决方案XMLdocument Sort 想知道这是否也可以通过 XPath 实现,这样我就不需要加载新的程序集了。我也对属性和子节点有点困惑?在性能方面哪个更好?按属性值或子节点获取?

更新 1

@Timothy 在link 中提出的解决方案似乎很有希望

var sortedItems = myDoc.GetElementsByTagName("item").OfType<XmlElement>()
.OrderBy(item => DateTime.ParseExact(item.GetAttribute("sTime"), "MM/dd/yyyy h:mm:ss tt", null));

【问题讨论】:

    标签: performance linq sorting xpath xmldocument


    【解决方案1】:

    你的意思是XDocument.XPathSelectElements 方法吗?看到这个问题:XPath and XPathSelectElement

    请注意,您不能直接选择属性。我不确定这种方法的性能如何,但您始终可以自己遍历树。

    【讨论】:

    • 这正是我想要的。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-24
    • 2017-02-19
    • 1970-01-01
    • 2011-06-17
    • 2011-11-20
    • 1970-01-01
    相关资源
    最近更新 更多