|
XML Library 1.0 | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjavax.xml.parsers.DocumentBuilderFactory
org.koiroha.xml.parser.HTMLDocumentBuilderFactory
public class HTMLDocumentBuilderFactory
HTML ドキュメントビルダーファクトリです。well-formed でない HTML 文書を解析して DOM を 構築することが出来ます。このファクトリから生成されるビルダーは XML として正しくない文書構造を 内部で補正し、警告のみで DOM を作り上げます。この強引な方法は必ずしも全ての人の「想定通り」の DOM を生成するわけではない事に注意してください。特に、既存の HTML を XHTML に変換するよう な使い方をする場合には変換後の内容をよく確認してください。場合によってはビルダーが生成した DOM を「想定通り」に補正するプログラムが必要になるかもしれません。
このビルダーから生成されるパーサは解析対象が well-formed な XML であればおおよそ完全な DOM を生成する事が出来ますが完全な JAXP 互換を保証するものではなく、また標準の実装と置き換え られるものではありません。DOM の構築に実行環境の JAXP 実装を使用しています。
このクラスは JAXP で用意されている標準のドキュメントビルダーファクトリと同じ方法で使用する ことが出来ます。DocumentBuilderFactory の newInstance() メソッドにクラス名を指定して 下さい。
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance( "org.koiroha.xml.parser.HTMLDocumentBuilderFactory", loader); DocumentBuilder builder = factory.newDocumentBuilder(); Document html = builder.parse(in);
また解析対象が HTML であることが明確である場合の簡易的な方法として new によって構築する事も できます。
HTMLBuilderFactory factory = new HTMLBuilderFactory();
フィールドの概要 | |
---|---|
static String |
FEATURE_HTML_OPTIMIZE
HTML 要素を認識して適切な位置を設定する機能名です。 |
コンストラクタの概要 | |
---|---|
HTMLDocumentBuilderFactory()
コンストラクタは何も行いません。 |
|
HTMLDocumentBuilderFactory(DocumentBuilderFactory factory)
指定されたドキュメントビルダーファクトリを用いて HTML ドキュメントを作成するインスタンス を構築します。 |
メソッドの概要 | |
---|---|
Object |
getAttribute(String name)
このドキュメントビルダーファクトリの属性を参照します。 |
boolean |
getFeature(String name)
ファクトリの機能フラグを参照します。 |
Schema |
getSchema()
スキーマによる検証は実装されていません。 |
InputSource |
guessInpuSource(InputStream in,
String charset,
int maxLength)
指定されたバイナリストリームの内容を先読みして文字エンコーディングを決定し、解析に使用可能な 入力ソースとして返します。 |
boolean |
isCoalescing()
このファクトリから生成されるビルダーが CDATA セクションをテキストに展開するかどうかを 参照します。 |
boolean |
isExpandEntityReferences()
実装されていません。 |
boolean |
isHtmlOptimize()
HTML 解析時に要素名や属性名を小文字に変換するかどうかを参照します。 |
boolean |
isIgnoringComments()
このファクトリから生成されるビルダーがコメントを無視するかどうかを参照します。 |
boolean |
isIgnoringElementContentWhitespace()
実装されていません。 |
boolean |
isLowerCaseName()
HTML 解析時に要素名や属性名を小文字に変換するかどうかを参照します。 |
boolean |
isNamespaceAware()
このファクトリが生成したビルダーが名前空間を認識するかどうかを参照します。 |
boolean |
isValidating()
DTD による検証は実装されていません。 |
boolean |
isXIncludeAware()
XInclude は実装されていません。 |
DocumentBuilder |
newDocumentBuilder()
新規のドキュメントビルダーを構築します。 |
void |
setAttribute(String name,
Object value)
ファクトリに属性値を設定します。 |
void |
setCoalescing(boolean coalescing)
HTML 中の CDATA セクションを通常の テキスト としてバインドするかを設定
します。 |
void |
setExpandEntityReferences(boolean expandEntityRef)
実装されていません。 |
void |
setFeature(String name,
boolean value)
ファクトリの機能フラグを設定します。 |
void |
setHtmlOptimize(boolean html)
HTML 要素を認識して適切な位置への補正を行います。 |
void |
setIgnoringComments(boolean ignoreComments)
このファクトリから生成されるビルダーがコメントを無視するかどうかを設定します。 |
void |
setIgnoringElementContentWhitespace(boolean whitespace)
実装されていません。 |
void |
setLowerCaseName(boolean lowerCase)
HTML 解析時に要素名や属性名を小文字に変換するかどうかを設定します。 |
void |
setNamespaceAware(boolean awareness)
このファクトリから生成されるビルダーが XML の名前空間を認識するかどうかを設定します。 |
void |
setSchema(Schema schema)
スキーマによる検証は実装されていません。 |
void |
setValidating(boolean validating)
DTD による検証は実装されていません。 |
void |
setXIncludeAware(boolean state)
XInclude は実装されていません。 |
クラス javax.xml.parsers.DocumentBuilderFactory から継承されたメソッド |
---|
newInstance, newInstance |
クラス java.lang.Object から継承されたメソッド |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
フィールドの詳細 |
---|
public static final String FEATURE_HTML_OPTIMIZE
setHtmlOptimize(boolean)
,
定数フィールド値コンストラクタの詳細 |
---|
public HTMLDocumentBuilderFactory()
public HTMLDocumentBuilderFactory(DocumentBuilderFactory factory)
factory
- ベースとなるファクトリメソッドの詳細 |
---|
public Object getAttribute(String name) throws IllegalArgumentException
DocumentBuilderFactory
内の getAttribute
name
- 属性名
IllegalArgumentException
- 属性名が認識できない場合public void setAttribute(String name, Object value) throws IllegalArgumentException
DocumentBuilderFactory
内の setAttribute
name
- 属性名value
- 属性値
IllegalArgumentException
- 属性名が認識できない場合public boolean getFeature(String name)
DocumentBuilderFactory
内の getFeature
name
- 機能名
public void setFeature(String name, boolean value)
DocumentBuilderFactory
内の setFeature
name
- 機能名value
- 機能フラグpublic void setLowerCaseName(boolean lowerCase)
lowerCase
- 小文字に変換する場合 trueLooseXMLReader.FEATURE_LOWERCASE_NAME
public boolean isLowerCaseName()
public void setHtmlOptimize(boolean html)
ただしこの機能を有効にした場合の副作用として、要素の意図していない移動が行われるかもしれ ません。
<head> <noscript> <meta http-equiv="Refresh" content="0;url=http://..."> </noscript> </head>
上記の例は <meta> 要素の親が <head> と認識しているために下記のように 補正されます。
<head> <noscript> </noscript><meta http-equiv="Refresh" content="0;url=http://..."> </head>
この機能を使用する場合はエラーハンドラに通知される警告に注目し、その補正が意図した通りの ものかどうかを確認する事を推奨します。特にトリッキーな (行儀の悪い) 記述を含む HTML から DOM を生成する場合はこの機能を無効にして自分で補正した方が良い場合があります。
この機能のデフォルト値は false です。
html
- 小文字に変換する場合 trueFEATURE_HTML_OPTIMIZE
public boolean isHtmlOptimize()
public void setCoalescing(boolean coalescing)
テキスト
としてバインドするかを設定
します。true を指定した場合、ビルダーが生成する DOM に CDATA セクションは含まれません。
DocumentBuilderFactory
内の setCoalescing
coalescing
- CDATA セクションをテキストとして扱う場合 truepublic boolean isCoalescing()
DocumentBuilderFactory
内の isCoalescing
public void setExpandEntityReferences(boolean expandEntityRef)
DocumentBuilderFactory
内の setExpandEntityReferences
expandEntityRef
- 実体参照を展開する場合 truepublic boolean isExpandEntityReferences()
DocumentBuilderFactory
内の isExpandEntityReferences
public void setIgnoringComments(boolean ignoreComments)
DocumentBuilderFactory
内の setIgnoringComments
ignoreComments
- コメントを無視する場合 truepublic boolean isIgnoringComments()
DocumentBuilderFactory
内の isIgnoringComments
public void setIgnoringElementContentWhitespace(boolean whitespace)
DocumentBuilderFactory
内の setIgnoringElementContentWhitespace
whitespace
- 無視可能な空白を無視する場合 truepublic boolean isIgnoringElementContentWhitespace()
DocumentBuilderFactory
内の isIgnoringElementContentWhitespace
public void setNamespaceAware(boolean awareness)
HTML ビルダーは文書中に名前空間が未定義の接頭辞が含まれていても DOM を生成する事が 出来ますが、そのような DOM は Transformer などで使用できない可能性がありますので注意 してください。
DocumentBuilderFactory
内の setNamespaceAware
awareness
- 名前空間を有効にする場合 truepublic boolean isNamespaceAware()
DocumentBuilderFactory
内の isNamespaceAware
public void setSchema(Schema schema)
DocumentBuilderFactory
内の setSchema
schema
- 使用するスキーマpublic Schema getSchema()
DocumentBuilderFactory
内の getSchema
public void setValidating(boolean validating)
DocumentBuilderFactory
内の setValidating
validating
- 検証を行う場合 truepublic boolean isValidating()
DocumentBuilderFactory
内の isValidating
public void setXIncludeAware(boolean state)
DocumentBuilderFactory
内の setXIncludeAware
state
- XInclude が有効な場合 truepublic boolean isXIncludeAware()
DocumentBuilderFactory
内の isXIncludeAware
public DocumentBuilder newDocumentBuilder() throws ParserConfigurationException
DocumentBuilderFactory
内の newDocumentBuilder
ParserConfigurationException
- パーサの構成が不正な場合public InputSource guessInpuSource(InputStream in, String charset, int maxLength) throws IOException
in
- 入力ストリームcharset
- デフォルトのエンコーディングmaxLength
- ストリームから先読みする最大バイトサイズ
IOException
- ストリームからの先読みに失敗した場合AbstractSAXParserFactory.guessInpuSource(InputStream, String, int)
|
koiroha.org by takami torao | |||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |