モジュール java.xml
パッケージ org.xml.sax

クラスInputSource


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

    SAXアプリケーションは、このクラスを利用して入力ソースに関する情報を単一のオブジェクトにカプセル化します。このオブジェクトには、公開識別子、システム識別子、バイト・ストリーム(エンコーディングが指定されている場合もある)、文字ストリームなどが含まれます。

    アプリケーションは、入力ソースをParser.parseメソッドの引数として、あるいはEntityResolver.resolveEntityメソッドの戻り値としてパーサーに渡すことができます。

    SAXパーサーは、InputSourceオブジェクトを使用してXML入力を読み込む方法を決定します。 使用可能な文字ストリームがある場合、パーサーは、そのストリーム内で見つかったテキスト・エンコーディング宣言を無視して、そのストリームを直接読み込みます。 文字ストリームがなく、バイト・ストリームがある場合、パーサーは、InputSourceで指定されたエンコーディングを使用して、そのバイト・ストリームを使用します。あるいは、エンコーディングが指定されていない場合は、XML仕様にあるようなアルゴリズムを使用した文字エンコーディングを自動検出して、そのバイト・ストリームを使用します。 文字ストリームとバイト・ストリームのどちらも使用できない場合、パーサーは、システム識別子によって識別されたリソースへのURI接続を開こうとします。

    InputSourceオブジェクトはアプリケーションに所属するため、これをSAXパーサーが変更することはできませんが、必要に応じてコピーを作成して変更することは可能です。 ただし、バイト・ストリームと文字ストリームの両方の標準的な処理は、それらをend-of-parseクリーンアップの一環として閉じることであるため、アプリケーションは、パーサーに渡されたあとでそのようなストリームを再利用しようとはしません。

    導入されたバージョン:
    1.4, SAX 1.0
    関連項目:
    XMLReader.parse(org.xml.sax.InputSource), EntityResolver.resolveEntity(java.lang.String, java.lang.String), InputStream, Reader
    • コンストラクタのサマリー

      コンストラクタ 
      コンストラクタ 説明
      InputSource()
      デフォルトの引数なしのコンストラクタ。
      InputSource​(InputStream byteStream)
      バイト・ストリームを指定して新しい入力ソースを作成します。
      InputSource​(Reader characterStream)
      文字ストリームを指定して新しい入力ソースを作成します。
      InputSource​(String systemId)
      システム識別子を指定して新しい入力ソースを作成します。
    • メソッドのサマリー

      修飾子と型 メソッド 説明
      InputStream getByteStream()
      この入力ソースのバイト・ストリームを取得します。
      Reader getCharacterStream()
      この入力ソースの文字ストリームを取得します。
      String getEncoding()
      バイト・ストリームまたはURIの文字セットを取得します。
      String getPublicId()
      この入力ソースの公開識別子を取得します。
      String getSystemId()
      この入力ソースのシステム識別子を取得します。
      boolean isEmpty()
      InputSourceオブジェクトが空であるかどうかを示します。
      void setByteStream​(InputStream byteStream)
      この入力ソースのバイト・ストリームを設定します。
      void setCharacterStream​(Reader characterStream)
      この入力ソースの文字ストリームを設定します。
      void setEncoding​(String encoding)
      文字エンコーディングがわかっている場合、これを設定します。
      void setPublicId​(String publicId)
      この入力ソースの公開識別子を設定します。
      void setSystemId​(String systemId)
      この入力ソースのシステム識別子を設定します。
    • メソッドの詳細

      • setPublicId

        public void setPublicId​(String publicId)
        この入力ソースの公開識別子を設定します。

        公開識別子は常にオプションです。アプリケーションに公開識別子を含めたい場合は、位置情報の一部として指定します。

        パラメータ:
        publicId - 文字列としての公開識別子。
        関連項目:
        getPublicId(), Locator.getPublicId(), SAXParseException.getPublicId()
      • getPublicId

        public String getPublicId()
        この入力ソースの公開識別子を取得します。
        戻り値:
        公開識別子。提供されなかった場合はnull。
        関連項目:
        setPublicId(java.lang.String)
      • setSystemId

        public void setSystemId​(String systemId)
        この入力ソースのシステム識別子を設定します。

        バイト・ストリームまたは文字ストリームがある場合、システム識別子はオプションですが、指定した方が便利です。アプリケーションはそれを使用して相対URIを解決し、エラー・メッセージや警告に含めることができるためです。パーサーは、バイト・ストリームまたは文字ストリームが指定されていない場合にかぎり、URIへの接続を開こうとします。

        システム識別子が示すオブジェクトの文字セットがわかっている場合、アプリケーションはsetEncodingメソッドを使ってこのエンコーディングを登録できます。

        システム識別子がURLである場合、完全に解決する必要があります。また、相対URLでない場合もあります。

        パラメータ:
        systemId - システム識別子を示す文字列。
        関連項目:
        setEncoding(java.lang.String), getSystemId(), Locator.getSystemId(), SAXParseException.getSystemId()
      • getSystemId

        public String getSystemId()
        この入力ソースのシステム識別子を取得します。

        getEncodingメソッドは、このシステム識別子が示すオブジェクトの文字セットを返します。不明な場合はnullを返します。

        システム識別子がURLである場合、完全に解決されます。

        戻り値:
        システム識別子。提供されなかった場合はnull。
        関連項目:
        setSystemId(java.lang.String), getEncoding()
      • setByteStream

        public void setByteStream​(InputStream byteStream)
        この入力ソースのバイト・ストリームを設定します。

        SAXパーサーは、バイト・ストリームのほかに文字ストリームが指定されている場合、バイト・ストリームを無視します。バイト・ストリームは、URI接続を開始するより優先的に使用されます。

        バイト・ストリームの文字セットがわかっている場合、アプリケーションはsetEncodingメソッドを使ってこのエンコーディングを設定する必要があります。

        パラメータ:
        byteStream - XML文書またはその他のエンティティを含むバイト・ストリーム。
        関連項目:
        setEncoding(java.lang.String), getByteStream(), getEncoding(), InputStream
      • getByteStream

        public InputStream getByteStream()
        この入力ソースのバイト・ストリームを取得します。

        getEncodingメソッドは、このバイト・ストリームの文字セットを返します。不明な場合はnullを返します。

        戻り値:
        バイト・ストリーム。提供されなかった場合はnull。
        関連項目:
        getEncoding(), setByteStream(java.io.InputStream)
      • setEncoding

        public void setEncoding​(String encoding)
        文字エンコーディングがわかっている場合、これを設定します。

        エンコーディングは、XMLエンコーディング宣言(XML 1.0勧告のセクション4.3.3を参照)の規定に合った文字列である必要があります。

        アプリケーションが文字ストリームを提供する場合、このメソッドには何の効果もありません。

        パラメータ:
        encoding - 文字エンコーディングを表す文字列。
        関連項目:
        setSystemId(java.lang.String), setByteStream(java.io.InputStream), getEncoding()
      • getEncoding

        public String getEncoding()
        バイト・ストリームまたはURIの文字セットを取得します。 この値は、アプリケーションが文字ストリームを提供する場合は無視されます。
        戻り値:
        エンコーディング。提供されなかった場合はnull。
        関連項目:
        setByteStream(java.io.InputStream), getSystemId(), getByteStream()
      • setCharacterStream

        public void setCharacterStream​(Reader characterStream)
        この入力ソースの文字ストリームを設定します。

        文字ストリームが指定されている場合、SAXパーサーはバイト・ストリームを無視し、また、システム識別子へのURI接続を開始しません。

        パラメータ:
        characterStream - XML文書またはその他のエンティティを含む文字ストリーム。
        関連項目:
        getCharacterStream()Reader
      • getCharacterStream

        public Reader getCharacterStream()
        この入力ソースの文字ストリームを取得します。
        戻り値:
        文字ストリーム。提供されなかった場合はnull。
        関連項目:
        setCharacterStream(java.io.Reader)
      • isEmpty

        public boolean isEmpty()
        InputSourceオブジェクトが空であるかどうかを示します。 空は次のように定義されます:
        • 公開識別子、システム識別子、バイト・ストリーム、文字ストリームなど、すべての入力ソースはnullです。
        • 公開識別子およびシステム識別子はnullであり、バイトおよび文字ストリームはnullであるか、バイトまたは文字を含みません。

          このメソッドは、指定されている場合はバイト・ストリームをリセットし、バイト・ストリームが提供されていない場合は文字ストリームをリセットします。

        バイトまたは文字ストリームのチェック中にエラーが発生した場合、メソッドはfalseを返して、XMLプロセッサがエラーを処理できるようにします。

        戻り値:
        InputSourceオブジェクトが空の場合はtrue、そうでない場合はfalse