2010-01-25 70 views
8

我的XML:如何使用Linq將元素插入到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來做到這一點?

回答

21

試試這個:

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"))); 
+1

太棒了!謝謝:)我現在唯一的問題是XPathSelectElement在哪裏?我似乎無法在我使用的任何名稱空間中找到它。 (我正在使用System.Linq和System.Xml.Linq) – 2010-01-25 12:01:21

+4

'System.Xml.XPath' – 2010-01-25 12:22:04