2007-01-16 01月16日の日記
■[C#] XMLの書き出し(XmlWriter)
.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(); } } }
================================
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場
トラックバック - http://d.hatena.ne.jp/gsf_zero1/20070116/p1
リンク元
- 556 http://www.google.co.jp/url?sa=t&rct=j&q=xmlwriter&source=web&cd=1&sqi=2&ved=0CCUQFjAA&url=http://d.hatena.ne.jp/gsf_zero1/20070116/p1&ei=gAuETsSKLK3QiALghMWsDA&usg=AFQjCNHiaC2yPLYhhOtNsB4wXotcRzUEaA
- 435 http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLG,GGLG:2006-21,GGLG:ja&q=XmlWriter Create サンプル
- 192 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CDIQFjAA&url=http://d.hatena.ne.jp/gsf_zero1/20070116/p1&ei=4sIfT6KwIYG3iQfds6n2DQ&usg=AFQjCNHiaC2yPLYhhOtNsB4wXotcRzUEaA&sig2=60c-RCtVQ5vn7BsESh4Vig
- 177 http://www.google.co.jp/search?q=XmlWriter&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a
- 177 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CDcQFjAB&url=http://d.hatena.ne.jp/gsf_zero1/20070116/p1&ei=fpsrT4arAsrgmAXur73mDw&usg=AFQjCNHiaC2yPLYhhOtNsB4wXotcRzUEaA
- 131 http://www.google.co.jp/search?q=XmlWriter&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox
- 126 http://www.google.co.jp/search?hl=ja&client=firefox-a&rls=org.mozilla:ja:official&hs=i70&q=C#+シリアライズ+encoding属性+memorystream&btnG=検索&lr=lang_ja
- 117 http://www.google.co.jp/search?hl=ja&q=XMLWriter&lr=lang_ja
- 115 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CC0QFjAA&url=http://d.hatena.ne.jp/gsf_zero1/20070116/p1&ei=tLVhT6H7F-atiAfgg53gBQ&usg=AFQjCNHiaC2yPLYhhOtNsB4wXotcRzUEaA
- 107 http://www.google.co.jp/url?sa=t&rct=j&q=c#+xmlwriter&source=web&cd=1&ved=0CCMQFjAA&url=http://d.hatena.ne.jp/gsf_zero1/20070116/p1&ei=wBPLTu1q6cqZBZ217N4N&usg=AFQjCNHiaC2yPLYhhOtNsB4wXotcRzUEaA