モジュール java.xml
パッケージ javax.xml.parsers

クラスSAXParserFactory


  • public abstract class SAXParserFactory
    extends Object
    アプリケーションがSAXベースのパーサーを構成および取得してXMLドキュメントを構文解析できるようにするファクトリAPIを定義します。
    導入されたバージョン:
    1.4
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected SAXParserFactory()
      newInstance()を強制的に使用するprotectedコンストラクタです。
    • コンストラクタの詳細

      • SAXParserFactory

        protected SAXParserFactory()
        newInstance()を強制的に使用するprotectedコンストラクタです。
    • メソッドの詳細

      • newDefaultInstance

        public static SAXParserFactory newDefaultInstance()
        SAXParserFactory組み込みシステムのデフォルト実装の新しいインスタンスを作成します。
        戻り値:
        SAXParserFactory組み込みシステムのデフォルト実装の新しいインスタンス。
        導入されたバージョン:
        9
      • newInstance

        public static SAXParserFactory newInstance()
        SAXParserFactoryの新しいインスタンスを取得します。 このstaticメソッドは新しいファクトリ・インスタンスを作成します。このメソッドは次の順序のルックアップ手順で、ロードするSAXParserFactory実装クラスを判定します。
        • javax.xml.parsers.SAXParserFactoryシステム・プロパティを使用する。
        • 構成ファイル"jaxp.properties"を使用します。 このファイルは標準のProperties形式であり、通常Javaインストールのconfディレクトリにあります。 これには、実装クラスの完全修飾名が格納されています。

          jaxp.propertiesファイルはJAXP実装によって一度だけ読み込まれ、その値は将来の使用のためにキャッシュされます。 最初の読込み時にファイルが存在しないと、そのあとにその存在がチェックされることはない。 最初に読み込まれたあと、jaxp.propertiesのプロパティの値を変更することはできない。

        • ServiceLoaderクラスで定義されているサービス・プロバイダ・ローディング機能を使用して、デフォルトのロード・メカニズムを使用してサービスの実装を特定してロード: サービス・プロバイダ・ローディング機能は、現在のスレッド・コンテキスト・クラス・ローダーを使用してサービスをロードしようとします。 コンテキスト・クラス・ローダーがnullの場合、システム・クラス・ローダーが使用されます。

        • それ以外の場合は、system-default実装が返されます。

        アプリケーションがSAXParserFactoryへの参照を取得すると、ファクトリを使用してパーサーのインスタンスを構成および取得できます。

        トラブルシューティングのヒント

        jaxp.debugシステム・プロパティを設定すると、このメソッドは実行中の処理や検索している場所に関する大量のデバッグ・メッセージをSystem.errに出力します。

        SAXParserのロードに問題がある場合、次のようにします。

         java -Djaxp.debug=1 YourProgram ....
         

        戻り値:
        SAXParserFactoryの新しいインスタンス。
        例外:
        FactoryConfigurationError - サービス構成エラーが発生した場合、または実装が使用できないかインスタンス化できない場合。
      • newInstance

        public static SAXParserFactory newInstance​(String factoryClassName,
                                                   ClassLoader classLoader)
        クラス名からSAXParserFactoryの新しいインスタンスを取得します。 この関数は、クラス・パスに複数のプロバイダがある場合に便利です。 どのプロバイダがロードされるかを指定できるため、アプリケーションをさらに制御できます。

        アプリケーションがSAXParserFactoryへの参照を取得すると、ファクトリを使用してパーサーのインスタンスを構成および取得できます。

        トラブルシューティングのヒント

        jaxp.debugシステム・プロパティを設定すると、このメソッドは実行中の処理や検索している場所に関する大量のデバッグ・メッセージをSystem.errに出力します。

        問題がある場合、次のようにします。

         java -Djaxp.debug=1 YourProgram ....
         

        パラメータ:
        factoryClassName - javax.xml.parsers.SAXParserFactoryの実装を提供する完全修飾のファクトリ・クラス名。
        classLoader - ファクトリ・クラスのロードに使用されるClassLoader nullの場合は、現在のThreadのコンテキストclassLoaderが、ファクトリ・クラスのロードに使用されます。
        戻り値:
        SAXParserFactoryの新しいインスタンス
        例外:
        FactoryConfigurationError - factoryClassNamenull、またはファクトリ・クラスをロードまたはインスタンス化できない場合。
        導入されたバージョン:
        1.6
        関連項目:
        newInstance()
      • newSAXParser

        public abstract SAXParser newSAXParser()
                                        throws ParserConfigurationException,
                                               SAXException
        現在構成されているファクトリ・パラメータを使用してSAXParserの新しいインスタンスを作成します。
        戻り値:
        SAXParserの新しいインスタンス。
        例外:
        ParserConfigurationException - 要求された構成を満たすパーサーを生成できない場合。
        SAXException - SAXエラーの場合。
      • setNamespaceAware

        public void setNamespaceAware​(boolean awareness)
        このファクトリで作成されたパーサーがXML名前空間をサポートするように指定します。 デフォルトでは、この値はfalseに設定されます。
        パラメータ:
        awareness - このコードで作成されたパーサーがXML名前空間をサポートする場合はtrue、そうでない場合はfalse。
      • setValidating

        public void setValidating​(boolean validating)
        このファクトリで作成されたパーサーが構文解析時にドキュメントの妥当性を検証するように指定します。 デフォルトでは、この値はfalseに設定されます。

        ここで言う「検証」とは、XML勧告で定義されている妥当性を検証するパーサーという意味です。 つまり、実質的にはDTD検証を制御するだけということです。ただし、JAXP 1.2に定義されている従来の2つのプロパティを除きます。

        DTDではなく、W3C XML SchemaまたはRELAX NGなどの新しいスキーマ言語を使用する場合は、setValidating(boolean)メソッドをfalseにして妥当性を検証しないパーサーとして構成してから、setSchema(Schema)メソッドでスキーマをパーサーに関連付けます。

        パラメータ:
        validating - このコードで作成されたパーサーが構文解析時にドキュメントの妥当性を検証する場合はtrue、そうでない場合はfalse。
      • isNamespaceAware

        public boolean isNamespaceAware()
        ファクトリが名前空間を認識するパーサーを作成するように構成されているかどうかを示します。
        戻り値:
        ファクトリが名前空間を認識するパーサーを作成するように構成されている場合はtrue、そうでない場合はfalse。
      • isValidating

        public boolean isValidating()
        構文解析時にXMLコンテンツを検証するパーサーを作成するようにファクトリが構成されているかどうかを示します。
        戻り値:
        構文解析時にXMLコンテンツを検証するパーサーを作成するようにファクトリが構成されている場合はtrue、そうでない場合はfalse。
      • setSchema

        public void setSchema​(Schema schema)
        このファクトリから作成されたパーサーによって使用されるSchemaを設定します。

        Schemaがnull以外の場合、パーサーは、情報をアプリケーションに渡す前に、ドキュメントを検証するために作成されたバリデータを使用します。

        バリデータによって警告、エラー、重大なエラーが検出されると、パーサーは自身がこれらのエラーを検出した場合と同様にこれらを処理する必要があります。 つまり、ユーザー指定のErrorHandlerが設定されている場合は、これらのエラーを受け取り、そうでない場合は実装固有のデフォルトのエラー処理規則に従って処理される必要があります。

        バリデータはSAXイベント・ストリームを変更することがあり(たとえば、ドキュメントから失われていたデフォルト値を追加するなど)、パーサーはこれらの変更されたイベント・ストリームをアプリケーションが確実に受け取るようにする役割を持ちます。

        最初に、nullSchemaとして設定されます。

        この処理はisValidating()メソッドがfalseを返した場合でも有効です。

        http://java.sun.com/xml/jaxp/properties/schemaSourceプロパティまたはhttp://java.sun.com/xml/jaxp/properties/schemaLanguageプロパティをnull以外のSchemaオブジェクトと一緒に使用するとエラーになります。 これらのプロパティがSAXParserに設定されていると、そのような構成によってSAXException例外が発生します。

        実装時の注意

        パーサーは、あらゆるSchema実装で動作できる必要があります。 ただし、パーサーおよびスキーマが仕様に記載されている結果を出すかぎり、実装固有のカスタム・メカニズムを使用できます。

        パラメータ:
        schema - 使用するSchema、スキーマを削除するにはnull
        例外:
        UnsupportedOperationException - 実装がこのメソッドをオーバーライドしない場合
        導入されたバージョン:
        1.5
      • setXIncludeAware

        public void setXIncludeAware​(boolean state)
        XInclude処理の状態を設定します。

        ドキュメント・インスタンスにXIncludeマークアップが見つかった場合、「XML Inclusions (XInclude) Version 1.0」に指定されているとおりに処理する必要があります。

        XInclude処理のデフォルトはfalseに設定されます。

        パラメータ:
        state - XInclude処理をtrueまたはfalseに設定する
        例外:
        UnsupportedOperationException - 実装がこのメソッドをオーバーライドしない場合
        導入されたバージョン:
        1.5
      • isXIncludeAware

        public boolean isXIncludeAware()
        XInclude処理の状態を取得します。
        戻り値:
        XInclude処理の現在の状態
        例外:
        UnsupportedOperationException - 実装がこのメソッドをオーバーライドしない場合
        導入されたバージョン:
        1.5