2010-11-04 19 views

cevap

80

Sen XDocument kullanabilirsiniz:

new XDocument(
    new XElement("root", 
     new XElement("someNode", "someValue")  
    ) 
) 
.Save("foo.xml"); 

Oluşturmak istediğiniz dosya çok büyük olduğunu ve XmlWriter kullanabilir belleğe sığdırmak mümkün değil.

+0

+1 @Darin Sadece verilen örnekte konsolun xml çıktılarını eklemek istiyorum, ancak xdocument'in Kaydetme yöntemini kullanırsanız, bunu bilgisayarınıza kaydetmenize izin verecektir. – Wade73

+0

Komik, tüm parantezler ile, neredeyse LISP gibi görünüyor (ve hissediyor). –

+1

Büyük, daha iyi, daha kısa ve daha okunabilir 'XmlDocument' kullanmadan okunabilir. –

30

İki yol: XML yazıcısını kullanabilir veya seri hale getirmeyi kullanabilirsiniz.

ben seri tavsiye etmemekle birlikte basitse, bu gibi XmlDocument kullanmak:

using System; 
using System.Xml; 

public class GenerateXml { 
    private static void Main() { 
     XmlDocument doc = new XmlDocument(); 
     XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null); 
     doc.AppendChild(docNode); 

     XmlNode productsNode = doc.CreateElement("products"); 
     doc.AppendChild(productsNode); 

     XmlNode productNode = doc.CreateElement("product"); 
     XmlAttribute productAttribute = doc.CreateAttribute("id"); 
     productAttribute.Value = "01"; 
     productNode.Attributes.Append(productAttribute); 
     productsNode.AppendChild(productNode); 

     XmlNode nameNode = doc.CreateElement("Name"); 
     nameNode.AppendChild(doc.CreateTextNode("Java")); 
     productNode.AppendChild(nameNode); 
     XmlNode priceNode = doc.CreateElement("Price"); 
     priceNode.AppendChild(doc.CreateTextNode("Free")); 
     productNode.AppendChild(priceNode); 

     // Create and add another product node. 
     productNode = doc.CreateElement("product"); 
     productAttribute = doc.CreateAttribute("id"); 
     productAttribute.Value = "02"; 
     productNode.Attributes.Append(productAttribute); 
     productsNode.AppendChild(productNode); 
     nameNode = doc.CreateElement("Name"); 
     nameNode.AppendChild(doc.CreateTextNode("C#")); 
     productNode.AppendChild(nameNode); 
     priceNode = doc.CreateElement("Price"); 
     priceNode.AppendChild(doc.CreateTextNode("Free")); 
     productNode.AppendChild(priceNode); 

     doc.Save(Console.Out); 
    } 
} 
+3

İkiden çok daha fazla yol var ve XDocument genellikle XmlDocument post 2.0'a tercih edildi – annakata

+0

@annakata: True, XMLWriter & serialization'u daha önce bahsettim. 3. Sonra tabiki ham metin yazımı kullanabilirsiniz. Başka bir yolu özledim mi, veri kümesi ve datatable writexml dışında mıyım? –

+0

@annakata: Oh ve bu arada, XDocument bir .NET 3.5+ özelliğidir, bu yüzden (ve hala) .NET 2.0'de mevcut değildi. –