Hier ist, wie es mit XSLT zu tun:
Ihre Daten unter der Annahme, nimmt diese Form (file.xml):
<?xml version="1.0"?>
<listing>
<file>
<node1>Foo</node1>
<price>4.99</price>
<node2>
<key>XX999</key>
</node2>
</file>
<file>
<node1>Bar</node1>
<price>5.67</price>
<node2>
<key>aa743</key>
</node2>
</file>
<file>
<node1>Was</node1>
<price>5.67</price>
<node2>
<key>rr321</key>
</node2>
</file>
</listing>
Diese Transformation (stylesheet.xsl):
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:strip-space elements="*"/>
<xsl:output method="xml" indent="yes"/>
<xsl:template match="listing">
<xsl:copy>
<xsl:apply-templates select="file">
<xsl:sort select="node2/key" data-type="text"/>
</xsl:apply-templates>
</xsl:copy>
</xsl:template>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Wenn mit diesem .Net-Code verwendet (muß ein using System.Xml;):
XslCompiledTransform xslt= new XslCompiledTransform();
xslt.Load(@"c:\stylesheet.xsl");
xslt.Transform(@"C:\file.xml", @"c:\sorted.xml");
Ergebnisse in dieser Ausgabe in sorted.xml hinzuzufügen:
<?xml version="1.0" encoding="utf-8"?>
<listing>
<file>
<node1>Bar</node1>
<price>5.67</price>
<node2>
<key>aa743</key>
</node2>
</file>
<file>
<node1>Was</node1>
<price>5.67</price>
<node2>
<key>rr321</key>
</node2>
</file>
<file>
<node1>Foo</node1>
<price>4.99</price>
<node2>
<key>XX999</key>
</node2>
</file>
</listing>
Sie sollten definieren, was Sie meinen, indem Sie sortieren. Ich sehe nichts falsches mit dem von Ihnen geposteten XML. –
Angenommen, ich habe tausend dieser Knoten in der Reihenfolge nach Preis. Ich brauche sie sortiert nach Schlüssel. –