在c#中创建嵌套的xml文档

Sha*_*ggy 3 c# xml xmldocument

我是一个新手.XmlDocument我想在c#中创建嵌套的xml文档.通过一些reaserach i fount,XmlDocument如果size很小,建议创建xml的方法.

我在创建嵌套标签时遇到了一些麻烦

码:

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);
Run Code Online (Sandbox Code Playgroud)

它的输出为

<?xml version="1.0" encoding="UTF-8"?>
<FIXML>
    <Header></Header>
    <RequestHeader></RequestHeader>
    <MessageKey></MessageKey>
    <RequestUUID>938692349</RequestUUID>
</FIXML>
Run Code Online (Sandbox Code Playgroud)

但应该是这样的

<?xml version="1.0" encoding="UTF-8"?>
<FIXML>
    <Header>
        <RequestHeader>
            <MessageKey>
                <RequestUUID>938692349</RequestUUID>
            </MessageKey>
        </RequestHeader>
    </Header>
</FIXML>
Run Code Online (Sandbox Code Playgroud)

Hen*_*man 7

使用更新的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);
Run Code Online (Sandbox Code Playgroud)