XPath以属性值的降序获取节点

时间:2014-07-13 08:50:17

标签: performance linq sorting xpath xmldocument

我有以下格式的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到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));

1 个答案:

答案 0 :(得分:0)

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

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