2010-10-21 24 views
9

Bir XML dosyasını bir System.Xml.XmlReader dosyasından nasıl yazıyorsunuz?XmlReader'dan XML dosyası nasıl oluşturulur?

Bunun basit bir soru olacağını düşündüm ama aradığım her sefer bir okuyucuya dosya okuyarak veya düğümde bir düğüm yazarak sona eriyor gibi görünüyor.

XmlReader nesnesi, bir veritabanında depolanan xml'yi aktarır ve yalnızca veritabanından bir dosyaya gelmesi gerekir. Bunu yapmanın kolay bir yolu var mı?

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

     dataCmd.CommandTimeout = 60000; 

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

cevap

24

Bir XmlWriter oluşturmak ve WriteNode method çağırmanız gerekir. Örneğin

:

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 genellikle kod örneği temizlemek için. –

+0

Ben bir tane daha yukarı kullanarak vardı, ama bu temizlik kodu daha da iyi yaptı. teşekkür ederim. – Andy

+2

Google çalışanları için. kullanmıyorsanız dosya kapanmıyor var ayarlar = new XmlWriterSettings {CloseOutput = true}; XmlWriter.Create (Dosya.OpenWrite (...), ayarlar) – Archlight

8

en basit yolu, örneğin, bu gibi bir yöntem kullanılarak, bir XmlWriter içine geçmek olacaktır:

public void WriteOutXml(XmlReader xmlReader, string fileName) 
{ 
    var writer = XmlWriter.Create(fileName); 
    writer.WriteNode(xmlReader, true); 
}