|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
コールバックを使って XML 文書を読み取るためのインタフェースです。
このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。
注: このインタフェースは、その名前にもかかわらず、標準 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)
プロパティ値を設定します。 |
メソッドの詳細 |
public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException
機能名は完全修飾 URI で表されます。XMLReader は機能名を認識しますが、その値を返すことはできません。このことは、特に SAX1 の Parser 用アダプタに当てはまります。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
- XMLReader が機能名を認識しない場合
SAXNotSupportedException
- XMLReader が機能名を認識するだけで、現時点ではその値を判断できない場合setFeature(java.lang.String, boolean)
public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException
機能名は完全修飾 URI で表されます。XMLReader は機能名を認識しますが、その値を設定することはできません。このことは、特に SAX1 の Parser
用アダプタに当てはまります。たとえば、SAX1 の Parser 用アダプタは、パーサに妥当性を検証を実行させるかどうかを決定することができません。
すべての XMLReader は、http://xml.org/sax/features/namespaces と http://xml.org/sax/features/namespace-prefixes を false に設定できなければなりません。
一部の機能の値は、特定の状況 (構文解析前、構文解析中、構文解析後など) でだけ不変または可変になります。
name
- 機能名。完全修飾 URI で表される
SAXNotRecognizedException
- XMLReader が機能名を認識しない場合
SAXNotSupportedException
- XMLReader が機能名を認識するだけで要求された値を設定できない場合getFeature(java.lang.String)
public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException
プロパティ名は完全修飾 URI で表されます。XMLReader はプロパティを認識するだけで、その状態を返すことはできません。このことは、特に SAX1 の Parser
用アダプタに当てはまります。
SAX2 には初期コアセットが文書化されていますが、XMLReader は特定のプロパティ名を認識できなくてもかまいません。
一部のプロパティ値は、特定の状況 (構文解析前、構文解析中、構文解析後など) でだけ使用可能です。
独自の URI 上に構築された名前を使って、実装者が独自のプロパティを作成することもできます (推奨)。
name
- プロパティ名。完全修飾 URI で表される
SAXNotRecognizedException
- XMLReader がプロパティ名を認識しない場合
SAXNotSupportedException
- XMLReader がプロパティ名を認識するだけで、現時点ではその値を判断できない場合setProperty(java.lang.String, java.lang.Object)
public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException
プロパティ名は完全修飾 URI で表されます。XMLReader はプロパティを認識するだけで、その値を設定することはできません。このことは、特に SAX1 の Parser
用アダプタに当てはまります。
SAX2 にはコアセットが付属していますが、XMLReader は特定のプロパティ名を認識できなくてもかまいません。
一部のプロパティ値は、特定の状況 (構文解析前、構文解析中、構文解析後など) でだけ不変または可変になります。
このメソッドは、拡張ハンドラの設定に使用する標準機構でもあります。
name
- プロパティ名。完全修飾 URI で表される
SAXNotRecognizedException
- XMLReader がプロパティ名を認識しない場合
SAXNotSupportedException
- XMLReader がプロパティ名を認識するだけで要求された値を設定できない場合public void setEntityResolver(EntityResolver resolver)
アプリケーションがエンティティリゾルバを登録しないと、XMLReader がデフォルトの解決を独自に行います。
アプリケーションは、構文解析中も新しいエンティティリゾルバを登録できます。新しいリゾルバが登録されると、SAX パーサはただちにこのリゾルバの使用を開始しなければなりません。
resolver
- エンティティリゾルバ
NullPointerException
- リゾルバ引数が null の場合getEntityResolver()
public EntityResolver getEntityResolver()
setEntityResolver(org.xml.sax.EntityResolver)
public void setDTDHandler(DTDHandler handler)
アプリケーションが DTD ハンドラを登録しないと、SAX パーサから報告されるすべての DTD イベントは通知なく無視されます。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサはただちにこのハンドラの使用を開始しなければなりません。
handler
- DTD ハンドラ
NullPointerException
- ハンドラ引数が null の場合getDTDHandler()
public DTDHandler getDTDHandler()
setDTDHandler(org.xml.sax.DTDHandler)
public void setContentHandler(ContentHandler handler)
アプリケーションがコンテンツハンドラを登録しないと、SAX パーサから報告されるすべてのコンテンツイベントは通知なく無視されます。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサはただちにこのハンドラの使用を開始しなければなりません。
handler
- コンテンツハンドラ
NullPointerException
- ハンドラ引数が null の場合getContentHandler()
public ContentHandler getContentHandler()
setContentHandler(org.xml.sax.ContentHandler)
public void setErrorHandler(ErrorHandler handler)
アプリケーションがエラーハンドラを登録しないと、SAX パーサから報告されるすべてのエラーイベントは通知なく無視されます。ただし、通常処理は続行できます。予想外のバグを回避するため、すべての SAX アプリケーションにエラーハンドラを実装することを強くお勧めします。
アプリケーションは、構文解析中も新しいハンドラを登録できます。新しいハンドラが登録されると、SAX パーサはただちにこのハンドラの使用を開始しなければなりません。
handler
- エラーハンドラ
NullPointerException
- ハンドラ引数が null の場合getErrorHandler()
public ErrorHandler getErrorHandler()
setErrorHandler(org.xml.sax.ErrorHandler)
public void parse(InputSource input) throws IOException, SAXException
アプリケーションは、このメソッドを使って、有効な任意の入力ソース (文字ストリーム、バイトストリーム、または URI) から XML 文書の構文解析を開始するように XML リーダに指示を送ります。
構文解析中は、アプリケーションからこのメソッドを呼び出すことはできません。入れ子になっている XML 文書 1 つ 1 つに対して新しい XML リーダを作成する必要があります。構文解析が完了したら、同じ XMLReader オブジェクトを再利用できます。別の入力ソースでの再利用も可能です。
構文解析中、XMLReader は登録済みのイベントハンドラを介して 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)
public void parse(String systemId) throws IOException, SAXException
このメソッドを使用すれば、システム識別子から簡単に文書を読み取ることができます。以下の指定でも同じことができます。
parse(new InputSource(systemId));
システム識別子が URL の場合、アプリケーションはこれをパーサに渡す前に完全に解決する必要があります。
systemId
- システム識別子 (URI)
SAXException
- SAX 例外。ほかの例外をラップしている可能性がある
IOException
- パーサからの IO 例外。通常、アプリケーションが提供するバイトストリームまたは文字ストリームからの例外parse(org.xml.sax.InputSource)
|
JavaTM 2 Platform Std. Ed. v1.4.0 |
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | ||||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
Java、Java 2D、および JDBC は米国ならびにその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2002 Sun Microsystems, Inc. 901 San Antonio Road
Palo Alto, California, 94303, U.S.A. All Rights Reserved.