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-if-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, 2014, Oracle and/or its affiliates. All rights reserved.