2013-06-05 34 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