2010-10-21 36 views
9

Làm thế nào để bạn viết một tệp XML từ một System.Xml.XmlReader?Cách tạo tệp XML từ XmlReader?

Tôi nghĩ đây sẽ là một câu hỏi đơn giản nhưng bất cứ khi nào tôi tìm kiếm, tôi dường như kết thúc bằng việc đọc tệp cho người đọc hoặc nút ghi bằng nút.

Đối tượng XmlReader truyền tải xml được lưu trữ trong cơ sở dữ liệu và chỉ cần thoát khỏi cơ sở dữ liệu vào tệp. Có cách nào dễ dàng để làm điều này?

 SqlCommand dataCmd = new SqlCommand(sqlText, Conn); 
     System.Xml.XmlReader dataReader = null; 

     dataCmd.CommandTimeout = 60000; 

     Conn.Open(); 
     dataReader = dataCmd.ExecuteXmlReader(); 
     dataReader.Read(); 

Trả lời

24

Bạn cần tạo XmlWriter và gọi số WriteNode method.

Ví dụ:

using (conn) 
using (SqlCommand dataCmd = new SqlCommand(sqlText, Conn)) { 
    dataCmd.CommandTimeout = 60000; 

    Conn.Open(); 
    using (XmlReader dataReader = dataCmd.ExecuteXmlReader()) 
    using (XmlWriter writer = XmlWriter.Create(File.OpenWrite(...)) { 
     writer.WriteNode(dataReader, true); 
    } 
} 
+1

+1 cho thường dọn dẹp các mẫu mã. –

+0

tôi đã sử dụng một cái cao hơn, nhưng việc dọn dẹp này đã làm cho mã này trở nên tốt hơn. cảm ơn bạn. – Andy

+2

Dành cho những người chơi. Tệp không bị đóng nếu bạn không sử dụng var settings = new XmlWriterSettings {CloseOutput = true}; XmlWriter.Create (File.OpenWrite (...), cài đặt) – Archlight

8

Cách đơn giản nhất sẽ được để vượt qua nó thành một XmlWriter, sử dụng một phương pháp như thế này:

public void WriteOutXml(XmlReader xmlReader, string fileName) 
{ 
    var writer = XmlWriter.Create(fileName); 
    writer.WriteNode(xmlReader, true); 
} 
Các vấn đề liên quan