2011-04-22 45 views
1

我需要創建具有N級的xml文件。如何創建N級xml文件

for ex。在我下面的例子中,我有'AlbumDetails'是根元素,'PrintPackage'是另一個子根,'UpgradePackage'是另一個子根。

任何人都可以告訴我如何在C#中創建N級/多級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> 
+4

有很多種方法來生成.NET XML - 什麼_exactly_你想幹什麼?請解釋'N級XML'是什麼意思 - 這不是一個標準的短語。 – Oded 2011-04-22 07:14:27

回答

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()); 
+0

也許他正在尋找一個XML序列化器?或者是其他東西。我認爲這個問題還不清楚。 – Oded 2011-04-22 07:16:05

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 
      ) 
     ) 
    ); 

當然,你不必建立在單個語句的一切 - 你可以單獨添加子節點,可能完全分開構造它們。事實上,你可能需要一個單獨的方法來創建每個「容器」元素。

1

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

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);