public interface LSParser
LSParser
は、XML を解析し、対応する DOM 文書構造を構築するための API を提供します。LSParser
インスタンスは、DOMImplementationLS.createLSParser()
メソッドを呼び出すことによって取得できます。
「DOM Level 3 Core」で指定されているように、文書が LSParser を介してはじめて使用可能になると、次のようになります。
Attr
ノードの value
属性と nodeValue
属性が、最初に XML 1.0 normalized value を返すことが予測される。ただし、「validate-if-schema」パラメータと「datatype-normalization」パラメータが true
に設定されている場合、使用されている属性正規化に応じて、属性値は XML 1.0 属性正規化で取得された属性値とは異なる可能性がある。「datatype-normalization」パラメータが false
に設定されている場合は、XML 1.0 属性正規化の実行が保証され、属性リストに名前空間宣言が含まれていない場合は、Element
ノードの attributes
属性が「XML Information Set」で定義されている [attributes] プロパティーを表す。
非同期 LSParser
オブジェクトにイベントリスナーを登録できるように、非同期 LSParser
オブジェクトは events::EventTarget
インタフェースも実装すると予測されます。
非同期 LSParser
オブジェクトでサポートされているイベントは次のとおりです。
LSParser
が文書のロードを完了します。LSLoadEvent
インタフェースの定義も参照してください。 LSParser
がデータ解析の進捗状況を通知します。この仕様では、進捗イベントを正確にいつディスパッチする必要があるか定義しません。つまり、意図的に実装依存のままにしてあります。ここでは、アプリケーションが進捗イベントをディスパッチする方法の一例を示します。パーサーがデータの受信を開始すると、進捗イベントがディスパッチされ、解析が開始されたことを示します。これ以降、受信および解析される 4096 バイトのデータごとに進捗イベントがディスパッチされます。これは一例にすぎませんが、実装では、解析中にいつでも進捗イベントをディスパッチするように、またはまったくディスパッチしないように選択できます。LSProgressEvent
インタフェースの定義も参照してください。 注: この仕様で定義されているイベントはすべて、名前空間 URI "http://www.w3.org/2002/DOMLS"
を使用します。
入力ソースの解析中、エラーは、エラーハンドラ (LSParser.domConfig
の「error-handler」パラメータ) 経由でアプリケーションに報告されます。この仕様では、XML やほかのマークアップを解析中に発生する可能性があるすべてのエラーは定義されていませんが、一般的なエラーケースの一部を定義しています。この仕様で定義されているエラーと警告の種類 (DOMError.type
) は次のとおりです。
"check-character-normalization-failure" [error]
"doctype-not-allowed" [fatal]
true
に設定されていて、doctype が検出された場合に返されます。 "no-input-specified" [fatal]
LSInput
オブジェクトで入力が指定されていない場合に返されます。 "pi-base-uri-not-preserved" [warning]
false
に設定されていて、次の XML ファイルが解析された場合が挙げられます。
<!DOCTYPE root [ <!ENTITY e SYSTEM 'subdir/myentity.ent' ]> <root> &e; </root>また、
subdir/myentity.ent
には次が含まれています。
<one> <two/> </one> <?pi 3.14159?> <more/>
"unbound-prefix-in-entity" [warning]
true
に設定されていて、バインドされていない名前空間接頭辞がエンティティーの置換テキストで検出された場合に発生する可能性のある、実装に依存した警告。この警告を返すのは強制されません。これは、一部の既存のパーサーが、エンティティーの置換テキストにあるバインドされていない名前空間の接頭辞を認識しない可能性があるためです。 "unknown-character-denormalization" [fatal]
false
に設定されていて、プロセッサで正規化プロパティーを判定できない文字が検出された場合に発生します。 "unsupported-encoding" [fatal]
"unsupported-media-type" [fatal]
true
に設定されていて、サポートされていないメディアタイプが検出された場合に返されます。 定義済みのエラーや警告を返すのに加えて、実装では、IO エラー (「ファイルが見つかりません、アクセス権は拒否されました...」)、XML 整形式エラーなどを招くほかのエラーや警告について実装固有のエラーを返します。
「Document Object Model (DOM) Level 3 Load and Save Specification」も参照してください。
修飾子と型 | フィールドと説明 |
---|---|
static short |
ACTION_APPEND_AS_CHILDREN
解析操作の結果をコンテキストノードの子として追加します。
|
static short |
ACTION_INSERT_AFTER
解析操作の結果をコンテキストノードの直後の兄弟ウィジェットとして挿入します。
|
static short |
ACTION_INSERT_BEFORE
解析操作の結果をコンテキストノードの直前の兄弟ウィジェットとして挿入します。
|
static short |
ACTION_REPLACE
コンテキストノードを解析操作の結果に置き換えます。
|
static short |
ACTION_REPLACE_CHILDREN
コンテキストノードのすべての子を解析操作の結果に置き換えます。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
abort()
現在
LSParser でロードされている文書のローディングを中断します。 |
boolean |
getAsync()
LSParser が非同期の場合は true 、同期の場合は false 。 |
boolean |
getBusy()
LSParser が現在文書をロードしていて、ビジー状態の場合は true 、それ以外の場合は false 。 |
DOMConfiguration |
getDomConfig()
入力ソースを構文解析するときに使用される
DOMConfiguration オブジェクト。 |
LSParserFilter |
getFilter()
フィルタがある場合、DOM ツリー構造をフィルタが構成しているかのように、実装はフィルタを呼び出します。
|
Document |
parse(LSInput input)
LSInput で識別されたリソースからの XML 文書を構文解析します。 |
Document |
parseURI(String uri)
URI 参照「IETF RFC 2396」で識別された場所から XML 文書を構文解析します。
|
Node |
parseWithContext(LSInput input, Node contextArg, short action)
LSInput で識別されたリソースからの XML フラグメントを構文解析し、既存の文書の、context 引数と action 引数で指定された位置にコンテンツを挿入します。 |
void |
setFilter(LSParserFilter filter)
フィルタがある場合、DOM ツリー構造をフィルタが構成しているかのように、実装はフィルタを呼び出します。
|
static final short ACTION_APPEND_AS_CHILDREN
Element
または DocumentFragment
になっている必要があります。static final short ACTION_REPLACE_CHILDREN
Element
、Document
、または DocumentFragment
になっている必要があります。static final short ACTION_INSERT_BEFORE
Element
または DocumentFragment
になっている必要があります。static final short ACTION_INSERT_AFTER
Element
または DocumentFragment
になっている必要があります。static final short ACTION_REPLACE
Element
または DocumentFragment
になっている必要があります。DOMConfiguration getDomConfig()
DOMConfiguration
オブジェクト。この DOMConfiguration
は、解析操作に固有です。この DOMConfiguration
オブジェクトからのパラメータ値が、解析操作によって作成または使用される Document
の DOMConfiguration
オブジェクトに自動的に渡されることはありません。この DOMConfiguration
オブジェクトからの必要なすべてのパラメータ値を Document
オブジェクトによって参照される DOMConfiguration
オブジェクトに渡す役割は DOM アプリケーションが果たします。LSParser
の DOMConfiguration
オブジェクトは次のパラメータを追加または変更します。
"charset-overrides-xml-encoding"
true
LSInput
でエンコーディングを明示的に設定すると、プロトコルからのエンコーディングがすべてオーバーライドされます。 false
"disallow-doctype"
true
false
"ignore-unknown-character-denormalizations"
"infoset"
DOMConfiguration
の定義を参照してください。「DOM Level 3 Core」の場合とは異なり、このパラメータは LSParser
に対してデフォルトで true
に設定されます。 "namespaces"
true
false
"resource-resolver"
LSResourceResolver
オブジェクトへの参照、または null。外部リソース (外部 XML エンティティーや XML スキーマロケーションなど) が検出されたときにこのパラメータの値が null でない場合、実装は、このパラメータで参照される LSResourceResolver
によってこのリソースが解決されるように要求します。 "supported-media-types-only"
true
false
"validate"
DOMConfiguration
の定義を参照してください。「DOM Level 3 Core」とは異なり、このパラメータが false
に設定された場合でも、内部サブセットの処理は常に実行されます。 "validate-if-schema"
DOMConfiguration
の定義を参照してください。「DOM Level 3 Core」とは異なり、このパラメータが false
に設定された場合でも、内部サブセットの処理は常に実行されます。 "well-formed"
DOMConfiguration
の定義を参照してください。「DOM Level 3 Core」の場合とは異なり、このパラメータは false
に設定できません。 LSParserFilter getFilter()
DOMConfiguration
パラメータにより要求された操作が適用されたあとに呼び出されます。たとえば、「validate」が true
に設定されていると、検証はフィルタが呼び出される前に実行されます。void setFilter(LSParserFilter filter)
DOMConfiguration
パラメータにより要求された操作が適用されたあとに呼び出されます。たとえば、「validate」が true
に設定されていると、検証はフィルタが呼び出される前に実行されます。boolean getAsync()
LSParser
が非同期の場合は true
、同期の場合は false
。boolean getBusy()
LSParser
が現在文書をロードしていて、ビジー状態の場合は true
、それ以外の場合は false
。Document parse(LSInput input) throws DOMException, LSException
LSInput
で識別されたリソースからの XML 文書を構文解析します。input
- 文書のソースが読み取られる LSInput
。LSParser
が同期 LSParser
である場合は、新しく作成され、値が設定された Document
が返される。LSParser
が非同期の場合は、このメソッドから戻るときに文書オブジェクトがまだ構築されていない可能性があるので、null
が返されます。DOMException
- INVALID_STATE_ERR: LSParser
の LSParser.busy
属性が true
の場合に発生します。LSException
- PARSE_ERR: LSParser
が XML 文書をロードできなかった場合に発生します。エラーに関する詳細を取得する場合、DOM アプリケーションは「error-handler」パラメータを使用して DOMErrorHandler
を接続する必要があります。Document parseURI(String uri) throws DOMException, LSException
uri
- 読み取られる XML 文書の場所。LSParser
が同期 LSParser
である場合は、新しく作成され、値が設定された Document
が返される。エラーが発生した場合は null
。LSParser
が非同期の場合は、このメソッドから戻るときに文書オブジェクトがまだ構築されていない可能性があるので、null
が返されます。DOMException
- INVALID_STATE_ERR: LSParser.busy
属性が true
の場合に発生します。LSException
- PARSE_ERR: LSParser
が XML 文書をロードできなかった場合に発生します。エラーに関する詳細を取得する場合、DOM アプリケーションは「error-handler」パラメータを使用して DOMErrorHandler
を接続する必要があります。Node parseWithContext(LSInput input, Node contextArg, short action) throws DOMException, LSException
LSInput
で識別されたリソースからの XML フラグメントを構文解析し、既存の文書の、context
引数と action
引数で指定された位置にコンテンツを挿入します。入力ストリームを解析中、コンテキストノード (またはその親。結果が挿入される場所に応じて異なる) はバインドされていない名前空間接頭辞を解決するために使用されます。コンテキストノードの ownerDocument
ノード (DOCUMENT_NODE
型のノードの場合はノード自体) は、デフォルト属性とエンティティー参照を解決するために使用されます。Document
ノードであり、アクションが ACTION_REPLACE_CHILDREN
である場合、コンテキストノードとして渡される文書は、その xmlEncoding
、documentURI
、xmlVersion
、inputEncoding
、xmlStandalone
、およびその他のすべての同様の属性が、LSParser.parse()
を使用して入力ソースが解析された場合に設定される値に設定されるように変更されます。LSParser
が非同期 (LSParser.async
が true
) である場合でも常に同期です。DOMConfiguration
の「error-handler」パラメータに関連付けられた ErrorHandler
インスタンス経由で呼び出し側に通知されます。parseWithContext
を呼び出しているとき、「validate」、「validate--schema」、「element-content-whitespace」の各構成パラメータの値は無視され、代わりにそれらのデフォルト値が常に使用されます。その他のパラメータは通常どおりに処理され、パーサーは、文書全体が解析されたかのように LSParserFilter
を呼び出すと予測されます。input
- ソース文書が読み取られる LSInput
。ソース文書は XML フラグメントである必要がある。つまり、完全な XML 文書 (DOCUMENT_NODE
型のコンテキストノードで、アクションが ACTION_REPLACE_CHILDREN
である場合を除く)、DOCTYPE (内部サブセット)、エンティティー宣言、表記法宣言、XML またはテキスト宣言のいずれかであってはいけない。contextArg
- 解析されるデータのコンテキストとして使用されるノード。このノードは、Document
ノード、DocumentFragment
ノード、または Element
ノードの子として許可される型のノードである必要がある。たとえば、Attribute
ノードであってはいけない。action
- このパラメータは、挿入されている新しいノードセットと、コンテキストノードの既存の子の間でどのアクションを実行するべきかを表す。指定できるアクションのセットは、上記の ACTION_TYPES
で定義される。DOMException
- HIERARCHY_REQUEST_ERR: コンテンツを置換できない場合や、コンテキストノードの子の前やあとに、またはコンテキストノードの子として挿入できない場合に発生します (「DOM Level 3 Core」の Node.insertBefore
または Node.replaceChild
も参照)。LSParser
がこのメソッドをサポートしていない場合、またはコンテキストノードが Document
型で、かつ DOM 実装が DocumentType
の子または Element
の子の置換をサポートしていない場合に発生します。LSParser.busy
属性が true
の場合に発生します。LSException
- PARSE_ERR: LSParser
が XML フラグメントをロードできなかった場合に発生します。エラーに関する詳細を取得する場合、DOM アプリケーションは「error-handler」パラメータを使用して DOMErrorHandler
を接続する必要があります。void abort()
LSParser
でロードされている文書のローディングを中断します。LSParser
が現在ビジー状態でない場合は、このメソッドを呼び出しても何も実行されません。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.