create nested xml document in c#

c#, xml, xmldocument

Solution

Much easier with the newer XML API (XDocument)

var doc = 
    new XElement("FIXML",        // you can optionally add an XDocument as outer element
      new XElement ("Header", 
          .... // more child elements, values and/or attributes
          new XElement("RequestUUID", 938692349)
      ));


doc.Save(fileName);

Problem

i am a newbie in `XmlDocument`.i want to create nested xml document in c#.through some reaserach i fount that `XmlDocument` are recommended way to create xml if size is small. i am having some trouble while creating nested tags code: ``` XmlDocument doc = new XmlDocument(); XmlDeclaration xDeclare = doc.CreateXmlDeclaration("1.0", "UTF-8", null); XmlElement root = doc.DocumentElement; doc.InsertBefore(xDeclare, root); XmlElement el = (XmlElement)doc.AppendChild(doc.CreateElement("FIXML")); el.AppendChild(doc.CreateElement("Header")).InnerText = ""; el.AppendChild(doc.CreateElement("RequestHeader")).InnerText = ""; el.AppendChild(doc.CreateElement("MessageKey")).InnerText = ""; el.AppendChild(doc.CreateElement("RequestUUID")).InnerText = "938692349"; Console.WriteLine(doc.OuterXml); ``` its giving output as ``` <?xml version="1.0" encoding="UTF-8"?> <FIXML> <Header></Header> <RequestHeader></RequestHeader> <MessageKey></MessageKey> <RequestUUID>938692349</RequestUUID> </FIXML> ``` but it should be like ``` <?xml version="1.0" encoding="UTF-8"?> <FIXML> <Header> <RequestHeader> <MessageKey> <RequestUUID>938692349</RequestUUID> </MessageKey> </RequestHeader> </Header> </FIXML> ```

Original source