C#: 使用属性值对 xml 节点进行排序
问题的出现原因是需要对XML节点按照属性值进行排序,但是提供的代码中没有明确说明如何实现。解决方法是通过使用LINQ对XML节点进行排序,然后保存排序后的结果。
首先,使用以下代码对XML节点进行排序:
var xml= xDoc.Element("Root") .Elements("I") .OrderByDescending(s => (int) s.Attribute("aa"));
然后,使用以下代码保存排序后的结果:
XDocument doc = new XDocument(new XElement("Root", xml)); doc.Save("C:\\Something.xml");
另外,可以使用XSLT来实现对XML节点的排序。首先,创建一个XSLT样式表,如下所示:
然后,使用以下代码调用XSLT样式表进行转换:
XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ; XslTransform myXslTrans = new XslTransform() ; myXslTrans.Load(myStyleSheet); XmlTextWriter myWriter = new XmlTextWriter("result.xml",null) ; myXslTrans.Transform(myXPathDoc,null,myWriter) ;
Garath提到无法使用LINQ,因此需要其他解决方法。询问是否允许使用XSLT,因为它是在.NET 2.0中可用的。