2010-10-21 117 views
9

如何從System.Xml.XmlReader中編寫XML文件?如何從XmlReader創建XML文件?

我認爲這將是一個簡單的問題,但每當我搜索我似乎結束了讀取文件讀取器或節點逐個節點。

XmlReader對象傳達存儲在數據庫中的xml,只需將其從數據庫中提取出來即可。有沒有簡單的方法來做到這一點?

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

     dataCmd.CommandTimeout = 60000; 

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

回答

24

你需要創建一個XmlWriter並調用其WriteNode method

例如:

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爲通常清理代碼示例。 – 2010-10-21 15:02:57

+0

我有一個使用更高的,但這個清理使代碼更好。謝謝。 – Andy 2010-10-21 15:36:24

+2

適用於googlers。 如果您不使用 var settings = new XmlWriterSettings {CloseOutput = true}; XmlWriter.Create(File.OpenWrite(...),settings) – Archlight 2013-08-29 13:59:58

8

的最簡單的方法是將它傳遞到的XmlWriter,使用方法如本:

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