前回に引き続き、今回も XMLStreamWriter インターフェースに定義されている writeXxxx() メソッドを見ていきましょう。 今回見ていくのは名前空間を使用しない場合の「要素」と「属性」です。
以下に書かれているサンプルでは、「writer」はXMLStreamWriter のインスタンスであるとします。
要素の開始と終了:writeStartElement(), writeEndElement()
要素の開始と終了を書き出すメソッドは以下の2つです:
void writeStartElement(String localName); void writeEndElement();
要素の終了 writeEndElement() には引数は必要ありません。
具体的には、以下のように使用します:
writer.writeStartElement("root"); writer.writeEndElement(); // 「<root></root>」と出力される。
要素のネスト構造を書き出すときも簡単です:
writer.writeStartElement("parent"); writer.writeStartElement("child"); writer.writeEndElement(); writer.writeEndElement(); // 「<parent><child></child></parent>」と出力される。
空要素:writeEmptyElement()
空要素(内容がない要素)は1つのメソッドで書くことができます*1:
void writeEmptyElement(String localName);
これも簡単:
writer.writeEmptyElement("root"); // 「<root/>」と出力される。
属性:writeAttribute()
属性を書き出すメソッドには以下のものがあります:
void writeAttribute(String localName, String value);
属性の書き出し方は少し特殊に感じるかも。 XMLEventWriter のように要素と同時には書き出しません。 writeStartElement() もしくは writeEmptyElement() の後に書き出します:
writer.writeStartElement("root"); writer.writeAttribute("att", "value"); writer.writeEndElement(); // 「<root att="value"></root>」と出力される。 writer.writeEmptyElement("root"); writer.writeAttribute("att", "value"); // 「<root att="value"/>」と出力される。
writeEndElement() の後などに書き出すと例外が投げられます。
*1:個人的には、空要素とそうでない要素を別々のメソッドで書き出すのではなく、XMLStreamWriter (もしくは XMLOutputFactory)のプロパティで設定できるようにしておいた方が良いような気がするんですが。