开发者

Inserting and saving xml using Linq to XML

开发者 https://www.devze.com 2023-03-12 17:12 出处:网络
If i have an XML file settings.xml like below 开发者_如何学JAVA <Root> <First> </First>

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

精彩评论

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