使用两个根节点创建XML文档

时间:2015-06-19 11:14:16

标签: c# xml xmldocument xml-documentation

我想用两个根节点创建XML,比如这个

XmlDocument

我的代码是这样的,我无法使用我的代码添加两个根元素,因此必须使用XmlDocument xmlDoc = new XmlDocument(); XmlNode rootNode = xmlDoc.CreateElement("header" ); xmlDoc.AppendChild(rootNode); XmlNode accountNode = xmlDoc.CreateElement("fracc"); accountNode.InnerText = Infracc; rootNode.AppendChild(accountNode); XmlNode txnNode = xmlDoc.CreateElement("txncode"); txnNode.InnerText = Intxncode; rootNode.AppendChild(txnNode); XmlNode reasonNode = xmlDoc.CreateElement("reason"); reasonNode.InnerText = Inreason; rootNode.AppendChild(reasonNode); XmlNode timeoutNode = xmlDoc.CreateElement("timeout"); timeoutNode.InnerText = Intimeout.ToString(); rootNode.AppendChild(timeoutNode); XmlNode rdateNode = xmlDoc.CreateElement("rdate"); rdateNode.InnerText = Indate.ToString(); rootNode.AppendChild(rdateNode); XmlNode rtimeNode = xmlDoc.CreateElement("rtime"); rtimeNode.InnerText = Intime.ToString(); rootNode.AppendChild(rtimeNode); XmlNode seqnoNode = xmlDoc.CreateElement("seqno"); seqnoNode.InnerText = Inseqno.ToString(); rootNode.AppendChild(seqnoNode); XmlNode prefixNode = xmlDoc.CreateElement("prefix"); prefixNode.InnerText = Inprefix.ToString(); rootNode.AppendChild(prefixNode); XmlNode msgtypeNode = xmlDoc.CreateElement("msgtype"); msgtypeNode.InnerText = Inmsgtype; rootNode.AppendChild(msgtypeNode); XmlNode sendtoNode = xmlDoc.CreateElement("sendto"); sendtoNode.InnerText = Insendto; rootNode.AppendChild(sendtoNode); XmlNode replytoNode = xmlDoc.CreateElement("replyto"); replytoNode.InnerText = Inreplyto; rootNode.AppendChild(replytoNode); xmlDoc.Save("boc.xml"); xmlDoc.Load("boc.xml"); xmlDoc.Save(Console.Out); return xmlDoc; 类。

<?xml version="1.0" encoding="IBM437"?>
<header>
  <fracc>6004</fracc>
  <txncode>ttt</txncode>
  <reason>testing</reason>
  <timeout>20</timeout>
  <rdate>2/3/2015 12:00:00 AM</rdate>
  <rtime>6/18/2015 1:20:00 PM</rtime>
  <seqno>5</seqno>
  <prefix>8</prefix>
  <msgtype>tt</msgtype>
  <sendto>t</sendto>
  <replyto>t</replyto>
</header>

我的输出就是这个

 <?php
echo arraySelect($owners, 'company_owner', 'size="1" class="text" style="color:'.$user_color.';"', 
                 ((@$obj->company_owner) ? $obj->company_owner : $AppUI->user_id));
    ?>

请帮我添加两个根节点。

2 个答案:

答案 0 :(得分:0)

您没有添加2个根元素。

更改您的代码行

          XmlDocument xmlDoc = new XmlDocument();
          XmlNode rootNode = xmlDoc.CreateElement("header" );
          xmlDoc.AppendChild(rootNode);

如下所示 -

            XmlDocument xmlDoc = new XmlDocument();
            XmlNode rootNode1 = xmlDoc.CreateElement("header1");
            xmlDoc.AppendChild(rootNode1);
            XmlNode rootNode = xmlDoc.CreateElement("header2");
            rootNode1.AppendChild(rootNode);

答案 1 :(得分:0)

根据您的示例输出,很明显<header1>是根元素,而<header2> <header1>,所以您需要的只是要做的是在<header2>中添加<header1>并将其余元素追加到<header2>中。这段代码应该可行

XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode = xmlDoc.CreateElement("header1");
xmlDoc.AppendChild(rootNode);

XmlNode rootNode2 = xmlDoc.CreateElement("header2");
rootNode.AppendChild(rootNode2);

XmlNode accountNode = xmlDoc.CreateElement("fracc");
accountNode.InnerText = Infracc;
rootNode2.AppendChild(accountNode);

XmlNode txnNode = xmlDoc.CreateElement("txncode");
txnNode.InnerText = Intxncode;
rootNode2.AppendChild(txnNode);

XmlNode reasonNode = xmlDoc.CreateElement("reason");
reasonNode.InnerText = Inreason;
rootNode2.AppendChild(reasonNode);

XmlNode timeoutNode = xmlDoc.CreateElement("timeout");
timeoutNode.InnerText = Intimeout.ToString();
rootNode2.AppendChild(timeoutNode);

XmlNode rdateNode = xmlDoc.CreateElement("rdate");
rdateNode.InnerText = Indate.ToString();
rootNode2.AppendChild(rdateNode);

XmlNode rtimeNode = xmlDoc.CreateElement("rtime");
rtimeNode.InnerText = Intime.ToString();
rootNode2.AppendChild(rtimeNode);

XmlNode seqnoNode = xmlDoc.CreateElement("seqno");
seqnoNode.InnerText = Inseqno.ToString();
rootNode2.AppendChild(seqnoNode);

XmlNode prefixNode = xmlDoc.CreateElement("prefix");
prefixNode.InnerText = Inprefix.ToString();
rootNode2.AppendChild(prefixNode);

XmlNode msgtypeNode = xmlDoc.CreateElement("msgtype");
msgtypeNode.InnerText = Inmsgtype;
rootNode2.AppendChild(msgtypeNode);

XmlNode sendtoNode = xmlDoc.CreateElement("sendto");
sendtoNode.InnerText = Insendto;
rootNode2.AppendChild(sendtoNode);

XmlNode replytoNode = xmlDoc.CreateElement("replyto");
replytoNode.InnerText = Inreplyto;
rootNode2.AppendChild(replytoNode);

xmlDoc.Save("boc.xml");
xmlDoc.Load("boc.xml");
xmlDoc.Save(Console.Out);           

return xmlDoc;

工作小提琴:https://dotnetfiddle.net/EevsJq