Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:使用属性值对xml节点排序_C#_Xml - Fatal编程技术网

C#:使用属性值对xml节点排序

C#:使用属性值对xml节点排序,c#,xml,C#,Xml,是否有一种方法可以根据属性值对xmlnodes进行排序,请考虑我不能使用linq。因为我使用的是.NET2.0 例如: <Root a="1"> <I aa="1" b="2"> <I aa="5" b="2"> <I aa="3" b="2"> <I aa="4" b="2"> </Root> 应该是-> <Root a="1"> <I aa="1" b="2">

是否有一种方法可以根据属性值对xmlnodes进行排序,请考虑我不能使用linq。因为我使用的是.NET2.0

例如:

<Root a="1">
   <I aa="1" b="2">
   <I aa="5" b="2">
   <I aa="3" b="2">
   <I aa="4" b="2">
</Root>

应该是->

<Root a="1">
    <I aa="1" b="2">
    <I aa="3" b="2">
    <I aa="4" b="2">
    <I aa="5" b="2">
</Root>

请提供帮助。

要排序,请使用以下命令:

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:

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/*">
        <xsl:copy>
            <xsl:for-each select="I">
                            <xsl:sort select="@aa" order="ascending"/>
                    <xsl:copy-of select="."/>
            </xsl:for-each>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

我认为这是对“试图攫取太多东西的人最终将一无所获”的重复。加拉斯:我在帖子中提到我不能使用林克。请回答一些其他的问题。是否允许使用XSLT?它在.NET2.0中
XPathDocument myXPathDoc = new XPathDocument(myXmlFile) ;
XslTransform myXslTrans = new XslTransform() ;
myXslTrans.Load(myStyleSheet);
XmlTextWriter myWriter = new XmlTextWriter("result.xml",null) ;
myXslTrans.Transform(myXPathDoc,null,myWriter) ;