倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

XMLEventFactory (3) : 属性・名前空間宣言 Attribute, Namespace

今回は属性と名前空間宣言に関する XML イベント。

  • Attribute
  • Namespace

Attribute


Attribute イベントは XMLEventFactory#createAttribute() メソッドによって生成します。 createStartAttribute() メソッドは次の3つが定義されています。

createAttribute(QName name, String value)
createAttribute(String localName, String value)
createAttribute(String prefix, String uri, String localName, String value)

設定できるパラメータ

パラメータ デフォルト値
QName QName -
接頭辞 String -
名前空間 URI String -
ローカル名 String -
属性値 String -

サンプル

各 createAttribute() メソッドの挙動を見てみましょう。

  • Java コード:メソッド呼び出し(引数の指定)
  • toString():生成された XMLEvent オブジェクトに対して toString() メソッドを呼び出した際に返される文字列
  • XMLEventWriter:生成された XMLEvent オブジェクトに対して XMLEventWriter#add(XMLEvent) を呼び出した際に書き出される文字列

です(これらは今後も使います)。 また、XMLEventWriter に書き出す場合は、事前に開始タグが出力されていなければ例外 XMLStreamException が投げられます。

Java コード createAttribute(new QName("att"), "value")
toString() att='value'
XMLEventWriter att="value"
Java コード createAttribute("att", "value")
toString() att='value'
XMLEventWriter att="value"
Java コード createAttribute("p", "ns-uri", "att", "value")
toString() p:att='value'
XMLEventWriter p:att="value"

名前空間 URI の値は XMLEventWriter には影響なさそうです。 また、属性値の型はどうやって指定するのか不明。

Namespace


Namespace イベントは XMLEventFactory#createNamespace() メソッドによって生成します。 createNamespace() メソッドは次の2つが定義されています。

createNamespace(String uri)
createNamespace(String prefix, String uri)

設定できるパラメータ

パラメータ デフォルト値
接頭辞 String -
名前空間 URI String -

接頭辞に指定がない場合は、デフォルト名前空間宣言に対応する Namespace イベントを生成します。

サンプル

XMLEventWriter に書き出す場合は、事前に開始タグが出力されていなければ例外 XMLStreamException が投げられます。

Java コード createNamespace("ns-uri")
toString() xmlns:='ns-uri'
XMLEventWriter xmlns="ns-uri"
Java コード createNamespace("p", "ns-uri")
toString() xmlns:p='ns-uri'
XMLEventWriter xmlns:p="ns-uri"