2010-11-04 36 views
50

Làm cách nào để tạo tệp xml đơn giản và lưu trữ trong hệ thống của tôi?C# tạo tệp xml đơn giản

+7

Đây là mơ hồ, dễ dàng googleable, và bạn đã không đưa ra thông tin hoặc ý kiến ​​cho rằng bạn đã cố gắng để tự làm điều này. – annakata

Trả lời

80

Bạn có thể sử dụng XDocument:

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

Nếu tập tin bạn muốn tạo là rất lớn và không thể phù hợp với bộ nhớ mà bạn có thể sử dụng XmlWriter.

+0

+1 @Darin Tôi chỉ muốn thêm rằng ví dụ cho đầu ra xml vào bàn điều khiển, nhưng nếu bạn sử dụng phương thức Lưu của xdocument, nó sẽ cho phép bạn lưu nó vào máy của bạn. – Wade73

+0

Hài hước, với tất cả các dấu ngoặc đơn, nó trông (và cảm thấy) gần giống như LISP. –

+1

Tuyệt vời, tốt hơn, ngắn hơn và dễ đọc hơn so với sử dụng 'XmlDocument'. –

30

Hai cách: Bạn có thể sử dụng XMLwriter, hoặc bạn có thể sử dụng serialization.

tôi khuyên bạn nên serialization, nhưng nếu nó là đơn giản, sử dụng XmlDocument, như thế này:

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

Có khá nhiều cách hơn hai và XDocument thường được ưu tiên hơn là XmlDocument post 2.0 – annakata

+0

@annakata: Đúng, tôi đã đề cập đến XMLwriter & serialization, mà làm cho nó 3. Sau đó, tất nhiên bạn có thể sử dụng văn bản thô. Tôi đã bỏ lỡ một cách khác, tôi có nghĩa là ngoại trừ tập dữ liệu và datxml datatable? –

+0

@annakata: Oh và nhân tiện, XDocument là một tính năng của .NET 3.5+, vì vậy nó đã (và vẫn là) không có sẵn trong .NET 2.0. –

Các vấn đề liên quan