public static void SortAttributes(XElement xElement)
{
var orderedNodes = xElement.Attributes().OrderBy(e => e.ToString()).ToArray();
xElement.RemoveAttributes();
foreach (var attribute in orderedNodes)
{
xElement.SetAttributeValue(attribute.Name, attribute.Value);
}
foreach (var node in xElement.Nodes().Where(n => n is XElement))
{
SortAttributes((XElement)node);
}
}
}