Что-то вроде следующего.Вы должны правильно использовать 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%ввода.