XMLStreamWriter は XMLEvent を用いずに XML ノードを外部へ出力するクラスです。 XMLEventWriter の使用手順は以下の通り:
- XMLStreamWriter のインスタンスを取得する
- XMLStreamWriter のインスタンスを用いて XML ノードを書き出す
- XMLStreamWriter をフラッシュする
- XMLStreamWriter を閉じる
簡単なサンプルは次のようになります(XML ノードを書き出す対象は引数の java.io.Writer オブジェクト):
public void outputXmlDocument(Writer writer)throws XMLStreamException{ XMLEventWriter eventWriter = null; try{ // 1. XMLStreamReader のインスタンスを取得する XMLOutputFactory factory = XMLOutputFactory.newInstance(); streamWriter = factory.createXMLStreamWriter(writer); // 2. XML ノードを書き出す streamWriter.writeStartDocument(); streamWriter.writeStartElement("root"); streamWriter.writeEndElement(); streamWriter.writeEndDocument(); // 3. XMLStreamWriter をフラッシュする streamWriter.flush(); }finally{ // 4. XMLStreamWriter を閉じる if(streamWriter != null) streamWriter.close(); } }
XML ノードの書き出し以外は XMLEventWriter の場合と殆ど同じですが、各ステップについて少し詳しく見ていきましょう。
XMLStreamWriter のインスタンスを取得する
XMLStreamWriter のインスタンスは、まず XMLOutputFactory のインスタンスを生成し、次いで XMLOutputFactory のメソッド XMLOutputFactory#createXMLStreamWriter() によって生成します。
XMLOutputFactory factory = XMLOutputFactory.newInstance(); XMLStreamWriter streamWriter = factory.createXMLStreamWriter(writer);
簡単には、次のようにもできます:
XMLStreamWriter streamWriter = XMLOutputFactory.newInstance().createXMLStreamWriter(writer);
createXMLStreamWriter() メソッドに渡せるオブジェクトのうち、出力対象の XML 文書として指定できるものは次の3つです:
これらのオブジェクトに加えて、OutputStream の場合エンコーディングを指定する文字列も渡すことができます。
XML イベントを書き出す
XMLStreamWriter に定義されている各種 writeXxxx() メソッドを用いて、 XML ノードを書き出します。 詳しくは次回以降に。
XMLStreamWriter をフラッシュする・閉じる
XMLEventWriter と同じです。