DataSet.WriteXMLがXML宣言を出力しない
表題のメソッドを引数無し使ってもXML宣言はスタンドアロンとして出力されていたと思うんだが。
<?xml version="1.0" standalone="yes"?> <hoge:root xmlns:hoge="〜"> <hoge:table> 〜 </hoge:table> </hoge:root>
さっき久しぶりにWindows7 VS2008上でビルドして動かしたらXML宣言は出力されないわ、ルートタグがきちんと閉じずにXML構造は壊れるわでびっくりした。
<hoge:root xmlns:hoge="〜"> </hoge:root>foobar> </hoge:table> </hoge:root>
.NET2.0の頃に作ったアプリケーションなんだが、〜.NET3.0〜.NET3.5SP1に至る間に何かあったんだろうか。
XmlTextWriter writer = new XmlTextWriter(fs, Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(); this.table.DataSet.WriteXml(writer);
こうしてXmlTextWriter#WriteStartDocumentを挟むと、当然の如くXML宣言が出力されるようになるが、腑に落ちないよな。