.NETでのXMLの書き出しには、System.Xml名前空間のクラスを用います。
バージョン 2.0までは、System.Xml.XmlTextWriterを利用して書き出しを行っていましたが
2.0からは、以下のメソッドが推奨となっています。
System.Xml.XmlWriter.Create
上記の静的メソッドに、System.Xml.XmlWriterSettingsオブジェクトを渡し、生成された
XmlWriterで出力を行います。
以下、サンプルです。
// vim:set ts=4 sw=4 et ws is nowrap ft=cs: using System; using System.IO; using System.Text; using System.Xml; namespace Gsf.Samples.CSharp{ class WriteXmlSample{ public void Execute(){ // // .NET Framework 2.0では、XmlTextWriterではなく // XmlWriter.Createメソッドの使用が推奨されています。 // // 設定オブジェクトを作成. // このオブジェクトには、予めデフォルト値が設定されています。 // デフォルト値の詳細は、msdnを参照してください。 XmlWriterSettings settings = new XmlWriterSettings(); settings.Indent = true; settings.IndentChars = " "; // // 書き出し. // // バッキングストアには、MemoryStreamを使用。 // 同じ目的ならStringWriterの方が楽ですが、こちらは内部のEncoding設定が // utf-16固定となっており、StringWriterでXMLを出力するとXML宣言のencodingが // 強制的にutf-16になってしまいます。 // using(Stream stream = new MemoryStream()){ using(XmlWriter xmlWriter = XmlWriter.Create(stream, settings)){ xmlWriter.WriteStartElement("root"); xmlWriter.WriteElementString("child", "ほげ"); xmlWriter.WriteStartElement("child"); xmlWriter.WriteStartElement("child-child"); xmlWriter.WriteStartAttribute("attr"); xmlWriter.WriteString("attr-value"); xmlWriter.WriteEndAttribute(); xmlWriter.WriteString("へへ"); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.WriteEndElement(); xmlWriter.Flush(); } // // ストリームのポジションを戻してから出力. // stream.Position = 0; Console.WriteLine(new StreamReader(stream).ReadToEnd()); } } static void Main(){ new WriteXmlSample().Execute(); } } }
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場