Adding elements to an xml file in C# Adding elements to an xml file in C# xml xml

Adding elements to an xml file in C#


You're close, but you want name to be an XAttribute rather than XElement:

 XDocument doc = XDocument.Load(spath);  XElement root = new XElement("Snippet");  root.Add(new XAttribute("name", "name goes here"));  root.Add(new XElement("SnippetCode", "SnippetCode"));  doc.Element("Snippets").Add(root);  doc.Save(spath); 


You need to create a new XAttribute instead of XElement. Try something like this:

public static void Test(){    var xdoc = XDocument.Parse(@"        <Snippets>          <Snippet name='abc'>            <SnippetCode>              testcode1            </SnippetCode>          </Snippet>          <Snippet name='xyz'>            <SnippetCode>                   testcode2            </SnippetCode>          </Snippet>        </Snippets>");    xdoc.Root.Add(        new XElement("Snippet",            new XAttribute("name", "name goes here"),            new XElement("SnippetCode", "SnippetCode"))    );    xdoc.Save(@"C:\TEMP\FOO.XML");}

This generates the output:

<?xml version="1.0" encoding="utf-8"?><Snippets>  <Snippet name="abc">    <SnippetCode>      testcode1    </SnippetCode>  </Snippet>  <Snippet name="xyz">    <SnippetCode>           testcode2    </SnippetCode>  </Snippet>  <Snippet name="name goes here">    <SnippetCode>SnippetCode</SnippetCode>  </Snippet></Snippets>


If you want to add an attribute, and not an element, you have to say so:

XElement root = new XElement("Snippet");root.Add(new XAttribute("name", "name goes here"));root.Add(new XElement("SnippetCode", "SnippetCode"));

The code above produces the following XML element:

<Snippet name="name goes here">  <SnippetCode>SnippetCode</SnippetCode></Snippet>