Как вставить элемент в XML с помощью Linq? - PullRequest
8 голосов
/ 25 января 2010

Мой XML:

<content>
    <item id="1">A</item>
    <item id="2">B</item>
    <item id="4">D</item>
</content>

Я загрузил это, используя XML, похожий на:

XDocument xDoc = new XDocument(data.Value);
var items = from i in xDoc.Element("content").Elements("item")
    select i;

Я хочу вставить другой элемент, чтобы получилось что-то вроде:

<content>
    <item id="1">A</item>
    <item id="2">B</item>
    <item id="3">C</item>
    <item id="4">D</item>
</content>

Как мне это сделать с помощью Linq2Xml?

1 Ответ

21 голосов
/ 25 января 2010

Попробуйте это:

xDoc.Element("content")
    .Elements("item")
    .Where(item => item.Attribute("id").Value == "2").FirstOrDefault()
    .AddAfterSelf(new XElement("item", "C", new XAttribute("id", "3")));

Или, если вам нравится XPath, как я:

xDoc.XPathSelectElement("content/item[@id = '2']")
    .AddAfterSelf(new XElement("item", "C", new XAttribute("id", "3")));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...