2010-11-04 9 views
50

¿Cómo puedo crear un archivo xml simple y almacenarlo en mi sistema?C# create simple xml file

+7

Esta es vago, fácilmente Googleable, y que ha ofrecido ninguna información o sugerencia de que usted ha tratado de haz esto tu mismo – annakata

Respuesta

80

Usted podría utilizar XDocument:

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

Si el archivo que desea crear es muy grande y no puede caber en la memoria puede utilizar XmlWriter.

+0

+1 @Darin Solo quiero agregar que el ejemplo proporcionado muestra el xml en la consola, pero si usa el método Save de xdocument, podrá guardarlo en su pc. – Wade73

+0

Divertido, con todos los soportes, parece (y se siente) casi como LISP. –

+1

Genial, mucho mejor, más corto y más legible que con 'XmlDocument'. –

30

Dos formas: puede usar XMLwriter, o puede usar la serialización.

me gustaría recomendar la serialización, pero si es simple, el uso XmlDocument, así:

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

Hay bastantes más formas que dos y XDocument es generalmente preferido a XmlDocument post 2.0 – annakata

+0

@annakata: Cierto, ya mencioné XMLwriter & serialization, que lo convierte en 3. Entonces, por supuesto, puede usar la escritura de texto sin procesar. ¿Perdí otra forma, quiero decir, excepto el conjunto de datos y el datatable writexml? –

+0

@annakata: Ah, y dicho sea de paso, XDocument es una característica de .NET 3.5+, por lo que estaba (y todavía no está) disponible en .NET 2.0. –