倭マン's BLOG

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

DocumentBuilderFactory の設定

今回は DocumentBuilderFactory に設定できる項目を見ていきます。 これら DocumentBuilderFactory の設定項目はそのインスタンスから生成する DocumentBuilder に受け継がれます。 SAXParserFactory, SAXParser の場合と同様に、DocumentBuilder に対しては、設定値を取得できるものもありますが、新たに設定を行うことはできません(記事一覧)。

JavaBeans プロパティ


まず DocumentBuilderFactory が持っている JavaBeans としてのプロパティを見てみましょう:

名前 デフォルト値 説明
coalescing boolean false CDATA セクションの文字列をテキストノードに変換してテキストノードとひとまとめにするかどうか。 false の場合は、CDATA セクションをそのまま保持する。
expandEntityReferences boolean true 実体参照を解決するかどうか。
ignoreComments boolean false コメントを無視するかどうか。
ignoreContentWhitespace boolean false 無視できる空白文字を無視するかどうか*1
namespaceAware boolean false 名前空間を解析するかどうか。
validating boolean false 妥当性検証を行うかどうか。
xIncludeAware boolean false XInclude を解決するかどうか。
schema javax.xml.validation.Schema null XML の文法を定義するスキーマ。 Schema オブジェクトが設定されれば、validating プロパティが false に設定されていても妥当性検証が行われる。

boolean 型のプロパティは、取得メソッドは isXxx()、設定メソッドは getXxx() の形をしています。 schema プロパティのアクセッサ・メソッドは getSchema(), setSchema() です。

その他の設定項目


上記のプロパティ以外に feature と attribute という設定項目があります。

getter メソッド setter メソッド 説明
feature boolean getFeature(String) setFeature(String, boolean) 名前と boolean 値のペア
attribute Object getAttribute(String) setAttribute(String, Object) 名前と Object 値のペア

サポートしている設定項目は実装に依存します。

*1:無視できる空白とは、子要素のみが許される要素に含まれている改行とインデントの空白文字。 原則的には無視できる空白かどうかは DTD などのスキーマ定義がないと判断できない。