Изменить порядок узлов XML - PullRequest
2 голосов
/ 13 июня 2011

У меня есть какой-то XML, который выглядит примерно так:

<root>
    <item>Banana</item>
    <item>Apple</item>
    <item>Cherry</item>
</root>

Это не фактические данные, которые у меня есть, но они послужат цели здесь.Я хочу использовать Linq to SQL, чтобы переупорядочить XML так, чтобы дочерние узлы были расположены в алфавитном порядке, например.

<root>
    <item>Apple</item>
    <item>Banana</item>
    <item>Cherry</item>
</root>

Я хочу иметь возможность затем вызывать ToString() в исходном XDocumentи пусть он вернет второй набор XML, как показано выше.Есть ли простой способ сделать это?Я пытался найти, но не повезло.

1 Ответ

2 голосов
/ 13 июня 2011

Возможно:

var reordered = new XElement(
                    "root",
                    xdoc.Root.Elements("item")
                             .OrderBy(x => x.Value)
                             .Select(x => new XElement("item", x.Value)));

Или чуть более гибкий (хотя и поддерживает только 1 вложенный уровень):

var reordered = new XElement(
                    xdoc.Root.Name,
                    xdoc.Root.Elements()
                             .OrderBy(x => x.Value)
                             .Select(x => new XElement(x.Name, x.Value)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...