|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
public interface XMLReader
コールバックを使って XML 文書を読み取るためのインタフェースです。
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。詳細については、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)
|
JavaTM Platform Standard Ed. 6 |
|||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Copyright 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。