2012-12-07 78 views
0

發佈兩個問題(一個),這裏的答案,看看是否有人有更好的解決辦法...寫XML格式輸出到文件

我想寫從存儲過程到文件格式的XML輸出。我第一次嘗試是這樣的:

// the actual command is a stored procedure that returns an XML document, but use this for demo purposes 
var xmlCommand = new SqlCommand("SELECT 1 as ID, 'asdf' as Name FOR XML PATH, ROOT('MyData')", conn); 
File.WriteAllText("file1.xml", (string)xmlCommand.ExecuteScalar()); 

這很好,短,但生成的文件都塞進一個行:

<MyData><row><ID>1</ID><Name>asdf</Name></row></MyData> 

我希望它是很好的格式化的:

<MyData> 
    <row> 
    <ID>1</ID> 
    <Name>asdf</Name> 
    </row> 
</MyData> 

回答

1

一種方法是使用XMLDocument和XMLTextWriter。

using (XmlReader reader = xmlCommand.ExecuteXmlReader()) 
{ 
    XmlDocument dom = new XmlDocument(); 
    dom.Load(reader); 

    var settings = new XmlWriterSettings(); 
    settings.Indent = true; 
    settings.OmitXmlDeclaration = true; 

    using (var writer = XmlTextWriter.Create("file2.xml", settings)) 
    { 
     dom.WriteContentTo(writer); 
    } 
} 

它完成了工作,但它看起來像很多代碼來完成一項簡單的任務。