如何使用Linq将元素插入XML?

Mat*_*t W 8 linq linq-to-xml

我的XML:

<content>
    <item id="1">A</item>
    <item id="2">B</item>
    <item id="4">D</item>
</content>
Run Code Online (Sandbox Code Playgroud)

我使用类似于以下的XML加载它:

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

我想插入另一个元素,最终得到类似的东西:

<content>
    <item id="1">A</item>
    <item id="2">B</item>
    <item id="3">C</item>
    <item id="4">D</item>
</content>
Run Code Online (Sandbox Code Playgroud)

我如何使用Linq2Xml做到这一点?

Rub*_*ias 21

试试这个:

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

或者,如果你像我一样喜欢XPath:

xDoc.XPathSelectElement("content/item[@id = '2']")
    .AddAfterSelf(new XElement("item", "C", new XAttribute("id", "3")));
Run Code Online (Sandbox Code Playgroud)

  • `System.Xml.XPath` (4认同)
  • 极好的!谢谢:)我现在唯一的问题是 XPathSelectElement 在哪里?我似乎无法在我使用的任何命名空间中找到它。(我正在使用 System.Linq 和 System.Xml.Linq) (2认同)