-vous simplement désireux de travailler avec les objets XML en mémoire ou que vous cherchez à stocker les résultats triés de retour dans un fichier?
Ce code montre la réorganisation des éléments dans un XDocument afin que vous puissiez l'enregistrer.
string xml = @"<Users>
<User>
<Address Name=""bbbb""/>
<Address Name=""aaaa"" />
</User>
<User>
<Address Name=""dddd""/>
<Address Name=""cccc"" />
</User>
</Users> ";
XDocument document = XDocument.Parse(xml);
var users = document.Root.Elements("User");
foreach (var user in users)
{
var elements = user.Elements("Address").OrderBy(a => a.Attribute("Name").Value).ToArray();
user.Elements().Remove();
user.Add(elements);
}
Si vous voulez un ordre en mémoire modèle, alors vous pouvez le faire comme ça
var query = from user in document.Root.Elements("User")
select new
{
Addresses = from address in user.Elements("Address")
orderby address.Attribute("Name").Value
select new
{
Name = address.Attribute("Name").Value
}
};
foreach (var user in query)
{
foreach (var address in user.Addresses)
{
// do something with address.Name
}
}
« Adresse » est une faute de frappe. Peut-être que vous voulez résoudre ce problème si c'est vraiment à quoi ressemblent vos fichiers. –