2010-01-25 31 views
8

XML của tôi:Làm cách nào để chèn một phần tử vào XML bằng LINQ?

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

Tôi đã tải này sử dụng XML tương tự như:

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

Tôi muốn chèn một yếu tố khác, để kết thúc với một cái gì đó như:

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

thế nào thế nào để làm điều này bằng cách sử dụng Linq2Xml?

Trả lời

21

Hãy thử điều này:

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

Hoặc, nếu bạn thích XPath như tôi làm:

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

tuyệt vời! Cảm ơn bạn :) Câu hỏi duy nhất của tôi bây giờ là XPathSelectElement ở đâu? Tôi không thể tìm thấy nó trong bất kỳ không gian tên nào tôi đang sử dụng. (Tôi đang sử dụng System.Linq và System.Xml.Linq) –

+4

'System.Xml.XPath' –

Các vấn đề liên quan