I've an XML document of type System.Xml.XmlDocument as following:
<root>
<group>
<dog order="1" />
<cat order="4" />
<cat order="3" />
<dog order="7" />
<dog order="5" />
<cat order="6" />
<dog order="2" />
</group>
<other/>
</root>
I want it to be like
<root>
<group>
<dog order="1" />
<dog order="2" />
<cat order="3" />
<cat order="4" />
<dog order="5" />
<cat order="6" />
<dog order="7" />
</group>
<other/>
</root>
I've tried various codes online but none of them is working for me. I've also converted my XmlDocument to XDocument to work with LINQ as follows:
var xDoc = XDocument.Parse(xdoc.OuterXml);
yet still no success.
I need to sort children inside group element XmlDocument
One option is to remove the elements and add them again after sorting.
XDocument doc = XDocument.Load(filename);
var elements = doc.Root.Element("group").Elements().ToList(); // Copy the elements.
doc.Root.Element("group").RemoveAll(); // Remove the elements from the document.
doc.Root.Element("group").Add(elements.OrderBy(x=>int.Parse(x.Attribute("order").Value)));
//Add them again after sorting.
Check this Demo
Output
<root>
<group>
<dog order="1" />
<dog order="2" />
<cat order="3" />
<cat order="4" />
<dog order="5" />
<cat order="6" />
<dog order="7" />
</group>
</root>