.NET 3.x Сортировка атрибутов в xml - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет. Поиск мне ничего не дал (( Столкнулся с неинтересной для меня загвоздкой: Есть xml файл примерно такого содержания:
<?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" />
/>
Проблема в том, что мне надо в этом файле сделать так, чтобы атрибуты в узлах были отсортированы в порядке возрастания по имени атрибутов, т.е. Prop1 чтобы располагалось на первом месте. Пишу вопрос в раздел C#, так как пишу на нем

Решение задачи: «.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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы