2011-06-13 72 views
1

如果我有像下面插入和使用LINQ to XML

<Root> 
    <First> 
    </First> 
</Root> 

我应该如何插入节点First内部的XML节点我首先加载使用XDocument settings = XDocument.Load("settings.xml")

XML中的一个XML文件settings.xml保存的xml和使用LINQ-to-XML保存它?

回答

2

首先你需要找到First元素。然后你可以添加其他元素和属性。 有不止一种方法更发现XML中的一个元素:ElementsDescendantsXPathSelectElement

var firstElement = settings.Descendants("First").Single(); 
firstElement.Add(new XElement("NewElement")); 

settings.Save(fileName); 
// or 
var newXml = settings.ToString(); 

输出:

<Root> 
    <First> 
    <NewElement /> 
    </First> 
</Root> 

或元素与属性:

firstElement.Add(
    new XElement("NewElement", new XAttribute("NewAttribute", "TestValue"))); 

输出:

<Root> 
    <First> 
    <NewElement NewAttribute="TestValue" /> 
    </First> 
</Root> 

[编辑]奖励问题的答案。怎么做,如果第一个元素不存在,我想创建它:

var root = settings.Element("Root"); 
var firstElement = root.Element("First"); 
if (firstElement == null) 
{ 
    firstElement = new XElement("First"); 
    root.Add(firstElement); 
} 
firstElement.Add(new XElement("NewElement")); 
+0

感谢亚历克斯的答案 – Lamps 2011-06-13 06:15:15

+0

@Bhaskar的K - 我刚才看到的答案标记,然后就不见了? :( – 2011-06-13 06:18:41

+0

有时如果节点“第一”可能不存在,我该如何检查并创建该节点,然后在其下创建子节点。 – Lamps 2011-06-13 06:18:54