public interface XMLReader
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。詳細については、http://www.saxproject.org を参照してください。
注: このインタフェースは、その名前にもかかわらず、標準 Java Reader
インタフェースを拡張しません。これは、XML の読み取りと文字データの読み取りが根本的に異なっているからです。
XMLReader は、XML パーサーの SAX2 ドライバが実装しなければならない必須インタフェースです。アプリケーションは、パーサーの機能やプロパティーの設定および照会、文書処理のためのイベントハンドラの登録、文書の構文解析の開始にこのインタフェースを使用します。
すべての SAX インタフェースは同期しているものと見なされます。parse
メソッドは、構文解析が完了するまで戻ってはいけません。リーダーは、イベントハンドラのコールバックが戻るのを待ってから、次のイベントを報告する必要があります。
このインタフェースは、現在は非推奨に指定されている SAX 1.0 の Parser
インタフェースに代わるインタフェースです。XMLReader インタフェースは、古い Parser インタフェースや一部のマイナーなインタフェースの機能に加えて、2 つの重要な拡張機能を備えています。
SAX1 の Parser と SAX2 の XMLReader を相互変換するためのアダプタも用意されています。
XMLFilter
, ParserAdapter
, XMLReaderAdapter
修飾子と型 | メソッドと説明 |
---|---|
ContentHandler |
getContentHandler()
現在のコンテンツハンドラを返します。
|
DTDHandler |
getDTDHandler()
現在の DTD ハンドラを返します。
|
EntityResolver |
getEntityResolver()
現在のエンティティーリゾルバを返します。
|
ErrorHandler |
getErrorHandler()
現在のエラーハンドラを返します。
|
boolean |
getFeature(String name)
機能フラグの値を検索します。
|
Object |
getProperty(String name)
プロパティー値を検索します。
|
void |
parse(InputSource input)
XML 文書を構文解析します。
|
void |
parse(String systemId)
システム識別子 (URI) から XML 文書を構文解析します。
|
void |
setContentHandler(ContentHandler handler)
アプリケーションにコンテンツイベントハンドラの登録を許可します。
|
void |
setDTDHandler(DTDHandler handler)
アプリケーションに DTD イベントハンドラの登録を許可します。
|
void |
setEntityResolver(EntityResolver resolver)
アプリケーションにエンティティーリゾルバの登録を許可します。
|
void |
setErrorHandler(ErrorHandler handler)
アプリケーションにエラーイベントハンドラの登録を許可します。
|
void |
setFeature(String name, boolean value)
機能フラグの値を設定します。
|
void |
setProperty(String name, Object value)
プロパティー値を設定します。
|
boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
機能名は完全指定 URI です。XMLReader は機能名を認識することはできますが、同時にその値を返すことはできません。機能の値によっては、構文解析の実行前、実行中、実行後などの特定のコンテキストでのみ使用可能な場合があります。また、プログラムではアクセスできない機能値もあります。SAX1 Parser
のアダプタの場合、基本となるパーサーが検証を実行しているかどうかや、外部エンティティーを拡張しているかどうかなどを、実装に依存せずに公開する方法はありません。
すべての XMLReader は、http://xml.org/sax/features/namespaces と http://xml.org/sax/features/namespace-prefixes の機能名を認識する必要があります。
一般的な使用方法は次のとおりです。
XMLReader r = new MySAXDriver(); // try to activate validation try { r.setFeature("http://xml.org/sax/features/validation", true); } catch (SAXException e) { System.err.println("Cannot activate validation."); } // register event handlers r.setContentHandler(new MyContentHandler()); r.setErrorHandler(new MyErrorHandler()); // parse the first document try { r.parse("http://www.foo.com/mydoc.xml"); } catch (IOException e) { System.err.println("I/O exception reading XML document"); } catch (SAXException e) { System.err.println("XML exception reading document."); }
独自の URI に基づいて作成された名前を使って、実装者が独自の機能を作成することもできます (推奨)。
name
- 機能名。完全指定 URI で表される。SAXNotRecognizedException
- 機能値を割り当てられない、または取得できない場合。SAXNotSupportedException
- XMLReader が機能名を認識するだけで、現時点ではその値を判断できない場合。setFeature(java.lang.String, boolean)
void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
機能名は完全指定 URI です。XMLReader は機能の値を表示できますが、現在の値を変更することはできません。機能の値によっては、構文解析の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。
すべての XMLReader で、http://xml.org/sax/features/namespaces と http://xml.org/sax/features/namespace-prefixes が false に設定されている必要があります。機能名。
name
- 機能名。完全指定 URI で表される。value
- 機能の要求された値 (true または false)。SAXNotRecognizedException
- 機能値を割り当てられない、または取得できない場合。SAXNotSupportedException
- XMLReader が機能名を認識するだけで、要求された値を設定できない場合。getFeature(java.lang.String)
Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
プロパティー名は完全指定 URI です。XMLReader はプロパティー名を認識できますが、一時的にその値を返すことはできません。プロパティーの値によっては、構文解析の実行前、実行中、実行後などの特定のコンテキストでしか使用できない場合があります。
SAX2 には初期コアセットが文書化されていますが、XMLReader は特定のプロパティー名を認識できなくてもかまいません。
独自の URI に基づいて作成された名前を使って、実装者が独自のプロパティーを作成することもできます (推奨)。
name
- プロパティー名。完全指定 URI で表される。SAXNotRecognizedException
- プロパティー値を割り当てられない、または取得できない場合。SAXNotSupportedException
- XMLReader がプロパティー名を認識するだけで、現時点ではその値を判断できない場合。setProperty(java.lang.String, java.lang.Object)
void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException
プロパティー名は完全指定 URI です。XMLReader はプロパティー名を認識できますが、現在の値を変更することはできません。プロパティーの値によっては、構文解析の実行前、実行中、実行後などの特定のコンテキストでのみ不変または可変である場合があります。
コアセットは SAX2 によって定義されていますが、XMLReader は特定のプロパティー名を認識できなくてもかまいません。
このメソッドは、拡張ハンドラの設定に使用する標準メカニズムでもあります。
name
- プロパティー名。完全指定 URI で表される。value
- 要求されたプロパティー値。SAXNotRecognizedException
- プロパティー値を割り当てられない、または取得できない場合。SAXNotSupportedException
- XMLReader がプロパティー名を認識するだけで、要求された値を設定できない場合。void setEntityResolver(EntityResolver resolver)
アプリケーションがエンティティーリゾルバを登録しないと、XMLReader がデフォルトの解決を独自に行います。
アプリケーションは、構文解析中も新しいエンティティーリゾルバを登録できます。新しいリゾルバが登録され次第、SAX パーサーはただちにこのリゾルバの使用を開始する必要があります。
resolver
- エンティティーリゾルバ。getEntityResolver()
EntityResolver getEntityResolver()
setEntityResolver(org.xml.sax.EntityResolver)
void setDTDHandler(DTDHandler handler)
アプリケーションが DTD ハンドラを登録しないと、SAX パーサーから報告されるすべての DTD イベントは通知なく無視されます。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサーはただちにこのハンドラの使用を開始しなければいけません。
handler
- DTD ハンドラ。getDTDHandler()
DTDHandler getDTDHandler()
setDTDHandler(org.xml.sax.DTDHandler)
void setContentHandler(ContentHandler handler)
アプリケーションがコンテンツハンドラを登録しないと、SAX パーサーから報告されるすべてのコンテンツイベントは通知なく無視されます。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサーはただちにこのハンドラの使用を開始しなければいけません。
handler
- コンテンツハンドラ。getContentHandler()
ContentHandler getContentHandler()
setContentHandler(org.xml.sax.ContentHandler)
void setErrorHandler(ErrorHandler handler)
アプリケーションがエラーハンドラを登録しないと、SAX パーサーから報告されるすべてのエラーイベントは通知なく無視されます。ただし、通常処理は続行できます。予想外のバグを回避するため、すべての SAX アプリケーションにエラーハンドラを実装することを強くお勧めします。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサーはただちにこのハンドラの使用を開始しなければいけません。
handler
- エラーハンドラ。getErrorHandler()
ErrorHandler getErrorHandler()
setErrorHandler(org.xml.sax.ErrorHandler)
void parse(InputSource input) throws IOException, SAXException
アプリケーションは、このメソッドを使用して、有効な任意の入力ソース (文字ストリーム、バイトストリーム、または URI) から XML 文書の構文解析を開始するように XML リーダーに指示を送ります。
構文解析中はアプリケーションからこのメソッドを呼び出すことはできません。アプリケーションは、入れ子になっているそれぞれの XML 文書に対して代わりに新しい XMLReader を作成する必要があります。構文解析が終了するとアプリケーションは同じ XMLReader オブジェクトを再利用しますが、別の入力ソースでの再利用も可能です。機能フラグやプロパティーに設定されたハンドラバインディングや値などの XMLReader オブジェクトの構成は、構成のその面の定義がほかの動作を明示的に指定しないかぎり、構文解析が終了しても変更されません。これには、構文解析されている文書の特性を公開する機能フラグやプロパティーがあります。
構文解析中、XMLReader は登録済みのイベントハンドラを介して XML 文書に関する情報を提供します。
このメソッドは同期メソッドであり、構文解析が終了するまでは終了しません。クライアントアプリケーションから構文解析を早期に終了する要求があった場合は例外をスローします。
input
- XML 文書のトップレベルの入力ソース。SAXException
- 任意の SAX 例外。ほかの例外をラップしている可能性があります。IOException
- パーサーからの IO 例外。アプリケーションが提供するバイトストリームまたは文字ストリームから発生する可能性があります。InputSource
, parse(java.lang.String)
, setEntityResolver(org.xml.sax.EntityResolver)
, setDTDHandler(org.xml.sax.DTDHandler)
, setContentHandler(org.xml.sax.ContentHandler)
, setErrorHandler(org.xml.sax.ErrorHandler)
void parse(String systemId) throws IOException, SAXException
このメソッドを使用すれば、システム識別子から簡単に文書を読み取ることができます。次の指定でも同じことができます。
parse(new InputSource(systemId));
システム識別子が URL の場合、アプリケーションはこれをパーサーに渡す前に完全に解決する必要があります。
systemId
- システム識別子 (URI)。SAXException
- 任意の SAX 例外。ほかの例外をラップしている可能性があります。IOException
- パーサーからの IO 例外。アプリケーションが提供するバイトストリームまたは文字ストリームから発生する可能性があります。parse(org.xml.sax.InputSource)
バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.