在这里发布问题和(一)答案,看看是否有人有更好的解决方案......
我正在尝试将存储过程的格式化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>
答案 0 :(得分: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);
}
}
它完成了工作,但似乎需要很多代码来完成一项简单的任务。