JavaTM Platform
Standard Ed. 6

org.xml.sax
インタフェース EntityResolver

既知のサブインタフェースの一覧:
EntityResolver2
既知の実装クラスの一覧:
DefaultHandler, DefaultHandler2, HandlerBase, XMLFilterImpl

public interface EntityResolver

エンティティーを解決するための基本インタフェースです。

このモジュールは、ソースコード、文書ともに公開ドメインに置かれています。したがって、内容に関する保証は一切提供されません。詳細については、http://www.saxproject.org を参照してください。
 

外部エンティティーのカスタム処理を実装する必要がある場合、SAX アプリケーションはこのインタフェースを実装し、setEntityResolver メソッドを使って SAX ドライバにインスタンスを登録する必要があります。

 

その後、XML リーダーにより、アプリケーションは外部エンティティー (外部 DTD サブセット、外部パラメータエンティティーを含む) を取り込む前に遮断できるようになります。

 

このインタフェースを実装しなければならない SAX アプリケーションはあまりありません。 しかし、このインタフェースは、データベースやその他の特殊な入力ソースから XML 文書を構築するようなアプリケーション、あるいは URL 以外の URI 型を使用するアプリケーションにとって非常に有益です。

 

次のリゾルバは、システム識別子「http://www.myhost.com/today」を使って、アプリケーションにエンティティーの特殊文字ストリームを提供します。

 
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;

 public class MyResolver implements EntityResolver {
   public InputSource resolveEntity (String publicId, String systemId)
   {
     if (systemId.equals("http://www.myhost.com/today")) {
              // return a special input source
       MyReader reader = new MyReader();
       return new InputSource(reader);
     } else {
              // use the default behaviour
       return null;
     }
   }
 }
 
 

アプリケーションもまた、このインタフェースを使ってシステム識別子をローカル URI にリダイレクトしたり、カタログ内の置換値を検索したり (通常、公開識別子を使用) できます。

導入されたバージョン:
SAX 1.0
関連項目:
XMLReader.setEntityResolver(org.xml.sax.EntityResolver), InputSource

メソッドの概要
 InputSource resolveEntity(String publicId, String systemId)
          アプリケーションが外部エンティティーを解決できるようにします。
 

メソッドの詳細

resolveEntity

InputSource resolveEntity(String publicId,
                          String systemId)
                          throws SAXException,
                                 IOException
アプリケーションが外部エンティティーを解決できるようにします。  

パーサーは、トップレベルの文書エンティティーを除くあらゆる外部エンティティーを開く前に、このメソッドを呼び出します。このようなエンティティーとして、外部 DTD サブセットや DTD 内で参照されるパラメータエンティティー (どちらの場合も、パーサーが外部パラメータエンティティーを読み込む場合のみ)、文書要素内で参照される一般的な外部エンティティー (パーサーが一般的な外部エンティティーを読み込む場合) があります。アプリケーションは、パーサーにエンティティー自体の検出、代替 URI の使用、またはアプリケーションによって提供されるデータの文字またはバイト入力ストリームとしての使用を要求できます。

 

アプリケーションの作成者は、このメソッドを使って外部システム識別子を安全なローカル URI にリダイレクトしたり、カタログ内の公開識別子を検索したり、データベースやその他の入力ソース (たとえばダイアログボックス) からエンティティーを読み取ったりできます。XML も SAX も、公開またはシステム ID を使ってリソースを解決するための適切なポリシーを指定しません。ただし、SAX は、このメソッドによって返される InputSource の解釈方法と、何も返されなかった場合はシステム ID が URL として逆参照されることを指定します。

 

システム識別子が URL の場合、SAX パーサーはこれをアプリケーションに報告する前に完全に解決する必要があります。

パラメータ:
publicId - 参照される外部エンティティーの公開識別子。 提供されなかった場合は null
systemId - 参照される外部エンティティーの システム識別子
戻り値:
新しい入力ソースを記述する InputSource オブジェクト。 パーサーにシステム識別子への正規 URI 接続を要求する場合は null
例外:
SAXException - SAX 例外。ほかの例外をラップしている可能性がある
IOException - Java 固有の入出力例外。通常、InputSource の新しい InputStream または Reader が生成されると発生する
関連項目:
InputSource

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。