倭マン's BLOG

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

XMLEventFactory (5) : 文字データ Characters, Space, CData, IgnorableSpace

今回は文字データに関する XML イベント。

  • Characters

StartDocument


Characters イベントを生成するメソッドは次の4つが定義されています:

createCharacters(String data)
createSpace(String data)
createCData(String data)
createIgnorableSpace(String data)

設定できるパラメータ

パラメータ デフォルト値
data String -

サンプル

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

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

です。

Java コード createCharacters("Character Data") createCharacters(" ")
toString() Character Data
XMLEventWriter Character Data
Java コード createSpace("Character Data") createSpace(" ")
toString() Character Data
XMLEventWriter Character Data
Java コード createCData("Character Data") createCData(" ")
toString() <![CDATA[Character Data]]> <![CDATA[ ]]>
XMLEventWriter <![CDATA[Character Data]]> <![CDATA[ ]]>
Java コード createIgnorableSpace("Character Data") createIgnorableSpace(" ")
toString() Character Data
XMLEventWriter Character Data

createXxxx() メソッドの引数が空白文字のみかどうかで少々挙動が変わるので注意。 上記のサンプルでの出力文字を見る分には特に問題はありませんが、Characters インターフェースに定義されている isXxxx() メソッドの返り値(boolean 値)がチョット混乱のもと。 ただし、これは実装に依存しているかも知れません(JavaDoc には挙動に関して特に何も書かれていないので)。

各 createXxxx() メソッドで返される Characters メソッドに対して isXxxx() メソッドを呼び出した返り値が true の場合「○」を書いてます(false の場合空欄):

isSpace() isCData() isIgnorableSpace()
createCharacters("Character Data")
createCharacters(" ")
createSpace("Character Data")
createSpace(" ")
createCData("Character Data")
createCData(" ")
createIgnorableSpace("Character Data")
createIgnorableSpace(" ")

createCharacters() と createSpace() は実質同じメソッドの様に見えます。