2010-01-25 13 views
8

My XML:Wie füge ich ein Element mit Linq in XML ein?

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

Ich möchte ein anderes Element einzufügen, mit etwas, um am Ende wie: Wie

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

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

ich diese unter Verwendung von XML ähnlich wie geladen haben mache ich das mit Linq2Xml?

Antwort

21

Versuchen Sie folgendes:

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

Oder, wenn Sie wie XPath wie ich:

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

Fantastic! Danke :) Meine einzige Frage ist jetzt wo ist das XPathSelectElement? Ich kann es in keinem der Namespaces, die ich benutze, finden. (Ich verwende System.Linq und System.Xml.Linq) –

+4

'System.Xml.XPath' –

Verwandte Themen