2008年4月18日金曜日

[.NET]XmlTextWriterのチョイ技

XmlTextWriterはXMLを出力する操作を助けてくれるクラスです。そしてDomのように重たくなく、且つ直感的な操作で、XMLを作成することができます。

しかし、なぜか「encoding="utf-16"」になってしまいす。 たとえば「encoding="utf-8"」にしたい場合は、WriteProcessingInstructionメソッドにて指定が可能です。(コードのコメント部分を生かす)
また、xml宣言そのものを出したくないといった場合は、「XmlWriterSettings.OmitXmlDeclaration」の指定にて出力しない方法があります。コードはこんな感じ


StringBuilder sb = new StringBuilder();

XmlWriterSettings xs = new XmlWriterSettings();
xs.Indent = true;

using (XmlWriter xw = XmlTextWriter.Create(sbxs))
{
    //xw.WriteProcessingInstruction("xml", "version='1.0' encoding='utf-8'"); //エンコードが指定
    xw.WriteStartElement("ROOT");

    xw.WriteStartElement("AAA");
    xw.WriteAttributeString("aa1""123");
    xw.WriteAttributeString("aa2""456");
    xw.WriteString("ああああ");
    xw.WriteEndElement();//</AAA>

    xw.WriteStartElement("BBB");

    xw.WriteStartElement("BBB1");
    xw.WriteString("いいいい1");
    xw.WriteEndElement();//</BBB1>

    xw.WriteStartElement("BBB2");
    xw.WriteString("いいいい2");
    xw.WriteEndElement();//</BBB2>

    xw.WriteEndElement();//</BBB>

    xw.WriteEndElement();//</ROOT>

    xw.Close();
}


<?xml version="1.0" encoding="utf-8"?>
<ROOT>
  <AAA aa1="123" aa2="456">ああああ</AAA>
  <BBB>
    <BBB1>いいいい1</BBB1>
    <BBB2>いいいい2</BBB2>
  </BBB>
</ROOT>

0 件のコメント: