2013-06-05 54 views
1

我已經開始探索c#並且正在處理xml。在xml文檔中選擇最後一個孩子

var doc = XDocument.parse("some.xml"); 

XElement root = doc.Element("book"); 
root.Add(new XElement("page")); 
XElement lastPost = (XElement)root.Element("book").LastNode; 
if (!lastPost.HasAttributes) 
{ 
    lastPost.Add(new XAttribute("src", "kk"); 
} 

doc.Save("some.xml"); 

現在,我建立xml文件

<flare> 
<control > 
<control /> 
<pages> 

</pages> 
</flare> 

我需要添加到到目前爲止,我得到它添加<page>但我怎麼加屬性<page name="aaa" type="dd" /> 頁面?爲此,我必須以某種方式選擇的<pages>最後一個孩子......

+0

你想達到什麼目的?你正在建立一些XML,或查詢現有的?我在您的示例x​​ml中看不到任何'book'元素。 –

回答

1

如果你有一些XML像

<book> 
    <pages>  
    </pages> 
</book> 

而且要添加page元素與某些屬性,然後

var pages = xdoc.Root.Element("pages"); 
pages.Add(new XElement("page", 
         new XAttribute("name", "aaa"), // adding attribute "name" 
         new XAttribute("type", "dd"))); // adding attribute "type" 
xdoc.Save("some.xml"); // don't forget to save document 

這將添加以下內容page元素:

<book> 
    <pages> 
    <page name="aaa" type="dd" />  
    </pages> 
</book> 

修改最後一頁的屬性也很簡單:

var lastPage = pages.Elements().LastOrDefault(); // getting last page if any 
if (lastPage != null) 
{ 
    lastPage.Add(new XAttribute("foo", "bar")); // add new attribute 
    lastPage.SetAttributeValue("name", "bbb"); // modify attribute 
} 
+1

謝謝你這麼簡單。 – user2268106