.NET 3.x Сортировка атрибутов в xml - C#
Формулировка задачи:
Всем привет. Поиск мне ничего не дал ((
Столкнулся с неинтересной для меня загвоздкой:
Есть xml файл примерно такого содержания:
Проблема в том, что мне надо в этом файле сделать так, чтобы атрибуты в узлах были отсортированы в порядке возрастания по имени атрибутов, т.е. Prop1 чтобы располагалось на первом месте.
Пишу вопрос в раздел C#, так как пишу на нем
<?xml version="1.0" encoding="utf-8"?> <Document> <Item Prop2="10" Prop3="1,0" Prop4="0,222" Prop1="10x1,0" /> <Item Prop2="10" Prop3="1,2" Prop4="0,260" Prop1="10x1,2" /> <Item Prop2="10,2" Prop3="1,0" Prop4="0,227" Prop1="10,2x1,0" /> <Item Prop2="10,2" Prop3="1,2" Prop4="0,266" Prop1="10,2x1,2" /> <Item Prop2="12" Prop3="1,0" Prop4="0,271" Prop1="12x1,0" /> <Item Prop2="12" Prop3="1,2" Prop4="0,320" Prop1="12x1,2" /> <Item Prop2="12" Prop3="1,4" Prop4="0,366" Prop1="12x1,4" /> <Item Prop2="12" Prop3="(1,5)" Prop4="0,388" Prop1="12x(1,5)" /> <Item Prop2="12" Prop3="1,6" Prop4="0,410" Prop1="12x1,6" /> <Item Prop2="13" Prop3="1,0" Prop4="0,296" Prop1="13x1,0" /> <Item Prop2="13" Prop3="1,2" Prop4="0,349" Prop1="13x1,2" /> <Item Prop2="13" Prop3="1,4" Prop4="0,401" Prop1="13x1,4" /> <Item Prop2="13" Prop3="(1,5)" Prop4="0,425" Prop1="13x(1,5)" /> <Item Prop2="13" Prop3="1,6" Prop4="0,450" Prop1="13x1,6" /> <Item Prop2="14" Prop3="1,0" Prop4="0,321" Prop1="14x1,0" /> <Item Prop2="14" Prop3="1,2" Prop4="0,379" Prop1="14x1,2" /> <Item Prop2="14" Prop3="1,4" Prop4="0,435" Prop1="14x1,4" /> />
Решение задачи: «.NET 3.x Сортировка атрибутов в xml»
textual
Листинг программы
public void SortXml(string path)
{
XDocument doc = XDocument.Load(path);
List<XElement> childItems = new List<XElement>();
foreach (var item in doc.Elements("Item"))
{
List<XAttribute> itemAttrs = new List<XAttribute>(item.Attributes().Count());
foreach (var attr in item.Attributes().OrderBy(x=>x.Name))
{
itemAttrs.Add(attr);
}
childItems.Add(new XElement(item.Name, itemAttrs));
}
doc = new XDocument(childItems);
doc.Save(path);
}