2010-02-09 2 views

risposta

13

È possibile ordinare utilizzando LINQ to XML, se XmlDocument non è il caso

XDocument input = XDocument.Load(@"input.xml"); 
XDocument output = new XDocument(
    new XElement("Users", 
     from node in input.Root.Elements() 
     orderby node.Attribute("Name").Value descending 
     select node)); 
+0

lo faccio, ma ho un'eccezione. "Almeno un oggetto deve implementare IComparable". – cagin

+0

deve essere 'node.Attribute (" Nome "). Valore' –

+0

FYI, eseguendo un' nodo.Attributo ("Nome") .Il valore' ti lascia aperto per un'eccezione di riferimento null se tale attributo è mancante. Inoltre, se il documento XML specifica uno schema, fare semplicemente 'node.Attribute (" Name ")' non sarà sufficiente, dato che dovrai usare un appropriato 'XName' per trovare l'attributo. –

0
XDocument xdoc = new XDocument(
    new XElement("Users", 
     new XElement("Name", "Z"), 
     new XElement("Name", "D"), 
     new XElement("Name", "A"))); 

var doc = xdoc.Element("Users").Elements("Name").OrderBy(n => n.Value); 
XDocument doc2 = new XDocument(new XElement("Users", doc)); 
+0

Nome è un attributo, non un elemento;) –

+0

@Daniel: oh merda! Oh bene, mio ​​male. L'OP può correggere – kd7