开发者

Inserting and saving xml using Linq to XML

If i have an XML file settings.xml like below

开发者_如何学JAVA
<Root>
    <First>
    </First>
</Root>

I Load the XML first using XDocument settings = XDocument.Load("settings.xml")

How should I insert a XML node inside the node First and save it using LINQ-to-XML?


First you need to find the First element. Then you can add other elements and attributes to it. There are more than one way to find an element in the xml: Elements, Descendants, XPathSelectElement, etc.

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

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

Output:

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

Or element with attribute:

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

Output:

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

[Edit] The answer to the bonus question. What to do if the first element does not exist and I want to create it:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜