如何使用多个根元素创建XML

时间:2017-03-18 09:31:59

标签: c# xml

在我需要的输出中使用XML

<?xml version="1.0" encoding="UTF-8"?>
<units> 
    <unit>
        <unit-info xmlns="">
            <unit-id>4550669</unit-id>
            <order-id>11949776</order-id>
            <parcel-id>none</parcel-id>
            <supplier-id>6</supplier-id>
        </unit-info>
    </unit>
</units>

为此我使用了以下C#代码:

   XDocument Document = new XDocument();
   XDeclaration declaration = new XDeclaration("1.0", "UTF-8", null);
   Document.Declaration = declaration;
   XNamespace ns = "http://www.elsevier.com/xml/ani/ani";
   XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
   XNamespace ce = "http://www.elsevier.com/xml/ani/common";

   XElement nameSpaceElement = new XElement(
            ns + "units", new XAttribute("xmlns", ns), new XAttribute(XNamespace.Xmlns + "xsi", xsi), new XAttribute(XNamespace.Xmlns + "ce", ce), new XAttribute(xsi + "schemaLocation",
    "http://www.elsevier.com/xml/ani/ani http://www.elsevier.com/xml/ani/ani512-input-CAR.xsd"),Document.Root);

   Document.Add(nameSpaceElement);
   XElement uniType = new XElement("unit", new XAttribute("type", "ARTICLE"));

   Document.Root.Add(uniType);

   XElement unitInfo = new XElement("unit-info", new XElement("unit-id", "4550669"), new XElement("order-id", "11949776"), new XElement("parcel-id", "none"), new XElement("supplier-id", "6"), new XElement("timestamp", DateTime.Now));
   Document.Root.Add(unitInfo);
   Document.Save("document.txt");

但是我得到了如下文档

的输出
<units>
  <unit></unit>
   <unit-info xmlns="">
    <unit-id>4550669</unit-id>
    <order-id>11949776</order-id>
    <parcel-id>none</parcel-id>
    <supplier-id>6</supplier-id>
    </unit-info>
 </units>

这里我的第二个元素就在那里关闭了。但是我需要在根元素之前关闭该元素。

如何使用XDocumentXElement来解决问题。

1 个答案:

答案 0 :(得分:0)

您应该将unitInfo添加到uniType,而不是直接添加到根目录。

类似于uniType.Add(unitInfo)而不是 Document.Root.Add(unitInfo)