сортировка XML-файла с использованием linq - PullRequest
2 голосов
/ 26 июля 2010

как отсортировать узлы в XML-файле и сохранить файл в отсортированном порядке, используя linq?

, если это мой XML-файл,

<Persons>
  <Person>
    <id>2</id>
    <Name>xxx</Name>
  </Person>
  <Person>
    <id>3</id>
    <Name>yyy</Name>
    </Person>
</Persons>

при вставке нового узла., Он долженвставьте вот так:

<Persons>
          <Person>
            <id>1</id>
            <Name>zzz</Name>
          </Person>
          <Person>
            <id>2</id>
            <Name>xxx</Name>
          </Person>
          <Person>
            <id>3</id>
            <Name>yyy</Name>
            </Person>
    </Persons>

как это сделать с помощью linq?

спасибо

1 Ответ

4 голосов
/ 26 июля 2010

Что-то вроде следующего.Вы должны правильно использовать int.TryParse вместо int.Parse и некоторые другие проверки (для определенных элементов и т. Д.), Если вы не уверены на 100% во вводе.Или проверьте его по схеме.

(я добавил человека в конце с id = 1. Я думаю, вы забыли добавить его.)

var doc = XDocument.Parse(@"<Persons>
<Person>
<id>2</id>
<Name>xxx</Name>
</Person>
<Person>
<id>3</id>
<Name>yyy</Name>
</Person>
<Person>
<id>1</id>
<Name>some name</Name>
</Person>
</Persons>");

//By building a new XDocument
var newDoc = new XDocument(new XElement("Persons",
                from p in doc.Element("Persons").Elements("Person")
                orderby int.Parse(p.Element("id").Value)
                select p));
//or by changing the original XDocument (does not change it where you got it from - a file etc.):

doc.Root.ReplaceAll(from p in doc.Root.Elements("Person")
                    orderby int.Parse(p.Element("id").Value)
                    select p);

И загрузить / сохранитьВы можете использовать:

var doc = XDocument.Load("filename"); //Or use a stream etc.
newDoc.Save("filename"); //Or save to a stream etc.

Вы можете использовать:

doc.Root

вместо:

doc.Element("Persons")

Но, опять же, проверьте элементы, если вы не уверены на 100%ввода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...