0

質問と(1つの)回答の両方をここに投稿して、誰かがより良い解決策を持っているかどうかを確認してください...

ストアドプロシージャからファイルにフォーマットされた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());

これは素晴らしくて短いものでしたが、生成されたファイルにはすべてが1行に詰め込まれています。

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

うまくフォーマットしたい:

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

1 に答える 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 に答える