如何创建N Level xml文件

时间:2011-04-22 07:11:06

标签: c# asp.net

我需要创建具有N Level的xml文件。

代表。在我的下面的例子中,我有'AlbumDetails'是根元素,'PrintPackage'是另一个子根,'UpgradePackage'是另一个子根。

任何人都可以告诉我如何在c#中制作N Level / Multi Level XML。

<AlbumDetails>
  <Album Id="203">
    <Institute>Oxford</Institute>
    <Venue>Wallingford School</Venue>
    <PrintPackage>
      <SizeName>Combination Pack</SizeName>
      <Price>1.00</Price>
      <Weight>60.00</Weight>
      <UpgradePackage>
      <SizeName>Upgrade 1</SizeName>
      <Price>1.00</Price>
      <Weight>60.00</Weight>
      </UpgradePackage>
      <SizeName>Standard Pack</SizeName>
      <Price>90.0000</Price>
      <Weight>600.0000</Weight>
    </PrintPackage>
  </Album>
</AlbumDetails>

3 个答案:

答案 0 :(得分:1)

您正在寻找XmlWriter课程。

更新:如果您要创建类似于上述文档的文档:

var builder = new StringBuilder();
using (var writer = XmlWriter.Create(builder))
{
    writer.WriteStartElement("AlbumDetails");
    writer.WriteStartElement("Album");
    writer.WriteAttributeString("Id", "203");

    writer.WriteElementString("Venue", "Wallingford School");

    writer.WriteStartElement("PrintPackage");

    .... etc.

    writer.WriteEndElement(); // close PrintPackage

    writer.WriteEndElement(); // close Album
    writer.WriteEndElement(); // close AlbumDetails
}
Console.WriteLine(builder.ToString());

答案 1 :(得分:1)

使用System.Xml.Linq(Linq2Xml)中的XDocument和XElement

XDocument doc = new XDocument(new XDeclaration("1.0","utf-8","true"),
            new XElement("AlbumDetails",
                new XElement("Album",new XAttribute("Id","203"),
                    new XElement("Institute","Oxford"),
                    new XElement("Venue","Wallingford School")
                    ...

                    )
                )
            );

如果您只是寻找XElement,您可以以类似的方式构建它。您可以拥有processingElement并根据您的逻辑创建XElement并执行

doc.Add(processingElement);

ele.Add(processingElement);

答案 2 :(得分:0)

他们不是真正的“孩子根源” - 他们只是具有其他子元素的元素。

我个人使用LINQ to XML。它是迄今为止我使用的最简单的XML API。例如:

var element = new XElement("AlbumDetails",
    new XElement("Album",
        new XAttribute("ID", 203"),
        new XElement("Institute", "Oxford"),
        new XElement("Venue", "Wallingford School"),
        new XElement("PrintPackage",
            new XElement("SizeName", "Combination Pack"),
            // etc
            new XElement("UpgradePackage",
                new XElement("SizeName", "Upgrade 1"),
                // etc
            )
        )
    );

当然,您不必在单个语句中构建所有内容 - 您可以单独添加子节点,可能完全单独构建它们。实际上,您可能需要一个单独的方法来创建每个“容器”元素。