0

在这里发布问题和(一个)答案,看看是否有人有更好的解决方案......

我正在尝试将格式化的 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>
4

1 回答 1

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);
    }
}

它完成了工作,但完成一项简单的任务似乎需要很多代码。

于 2012-12-07T17:35:27.663 回答