2010-01-25 16 views
8

Mi XML:¿Cómo inserto un elemento en XML usando Linq?

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

He cargado esta usando XML similar a:

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

quiero insertar otro elemento, para terminar con algo como:

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

Cómo Cómo hago esto usando Linq2Xml?

Respuesta

21

Prueba esto:

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

O, si te gusta XPath como lo hago:

xDoc.XPathSelectElement("content/item[@id = '2']") 
    .AddAfterSelf(new XElement("item", "C", new XAttribute("id", "3"))); 
+1

fantástico! Gracias :) Mi única pregunta ahora es dónde está el XPathSelectElement? Parece que no puedo encontrarlo en ninguno de los espacios de nombres que estoy usando. (Estoy usando System.Linq y System.Xml.Linq) –

+4

'System.Xml.XPath' –

Cuestiones relacionadas