2012-12-07 77 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); 
    } 
} 

它完成了工作,但它看起来像很多代码来完成一项简单的任务。