倭マン's BLOG

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

XML 文書のフォーマット 整理を試みる編 (1) : XMLFormat と OutputFormat

以前に XML 文書のフォーマット入力編」「出力編」というのをやりました*1

今回から何回かにわたって、それらからよく使いそうなものを「拙者の独断と偏見」で取捨選択して統合を試みてみます(一覧)。

XMLFormat と OutputFormat


SAX, StAX, DOM, JDOM, dom4j などから XML 文書のフォーマットに設定できるプロパティを集めていると、いろいろゴチャ混ぜになっている感じがするので(拙者が勝手にゴチャ混ぜにしているのも多々ありますが)、まずは(唐突かも知れませんが)それらのプロパティを次のように2つに分類します:

  • XMLFormat : XML 文書のどんな「オブジェクトモデル」に対しても設定できるフォーマット
  • OutputFormat*2 : 「テキストファイル」としての XML 文書に対して設定できるフォーマット

ここで、XML 文書の「オブジェクトモデル」とは、DOM, JDOM, dom4j のようなメモリー展開されたツリーモデルはもちろん、XMLEventReader, XMLEventWriter で扱う XMLEvent の列や、java.io.File オブジェクトで指定されるファイルの内容(テキスト)としての XML 文書なども含めます*3。 テキストファイルとしての XML 文書とは、テキストファイル(これも XML 文書のオブジェクトモデルの1つと思う)として表された XML 文書のことです。

まぁ要は、OutputFormat は XMLFormat の1種 (OutputFormat is a kind of XMLFormat) で、さらにテキストファイル形式独自のフォーマットプロパティが追加されていると思ってください。

XMLFormat と OutputFormat の具体例


各フォーマットに分類されるプロパティの具体例を幾つか見てみましょう。 詳しくは次回以降。

XMLFormat の具体例

XMLFormat のプロパティには、以下のようなものがあります:

  • namespaceAware (SAX, DOM)
  • ignoringComments (DOM)
  • trimText (dom4j)

OutputFormat の具体例

OutputFormat にあるプロパティは、XMLFormat のプロパティに加えて、以下のようなものがあります:

  • omitXMLDeclaration (dom4j)
  • expandEmptyElements (dom4j)

*1:何が「入力」で何が「出力」かを書いてなかった気がしますが、まぁあまり気にせずに。

*2:OutputFormat は org.dom4j.io.OutputFormat とは(名前は参考にしてますが)関係ありません。

*3:こういう意味では、「オブジェクトモデル」という言葉は紛らわしいかも知れません。 「XML 文書の表現」と言えば良いんでしょうか。