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

クラスXPathFactory



  • public abstract class XPathFactory
    extends Object

    XPathFactoryインスタンスを使用して、XPathオブジェクトを作成できます。

    検索メカニズムについては、newInstance(String uri)を参照してください。

    XPathFactoryクラスはスレッドに対して安全ではありません。 つまり、アプリケーション側で、どのような場合もXPathFactoryオブジェクトを使用するスレッドが1つだけであるようにする必要があります。 実装では、メソッドにsynchronizedのマークを付けて、障害のあるクライアントから保護することをお勧めします。

    XPathFactoryは再入不可能です。 newInstanceメソッドの1つが呼び出されているときに、アプリケーションは、同じスレッドからであっても、newInstanceメソッドを再帰的に呼び出すことはできません。

    導入されたバージョン:
    1.5
    • フィールドの詳細

      • DEFAULT_PROPERTY_NAME

        public static final String DEFAULT_PROPERTY_NAME

        JAXP仕様に従ったデフォルトのプロパティ名です。

        関連項目:
        定数フィールド値
      • DEFAULT_OBJECT_MODEL_URI

        public static final String DEFAULT_OBJECT_MODEL_URI

        デフォルトのオブジェクト・モデルURIです。

        関連項目:
        定数フィールド値
    • メソッドの詳細

      • newDefaultInstance

        public static XPathFactory newDefaultInstance​()
        XPathFactory組み込みシステムのデフォルト実装の新しいインスタンスを作成します。
        実装要件:
        XPathFactory組み込みシステムのデフォルトの実装は、default object modelW3C DOMをサポートするためにのみ必要ですが、追加のオブジェクト・モデルをサポートすることもできます。
        戻り値:
        XPathFactory組み込みシステムのデフォルト実装の新しいインスタンス。
        導入されたバージョン:
        9
      • newInstance

        public static XPathFactory newInstance​()

        デフォルトのオブジェクト・モデル、DEFAULT_OBJECT_MODEL_URI、W3C DOMを使用して、新しいXPathFactoryインスタンスを取得します。

        このメソッドは、機能的には次と同等です。

           newInstance(DEFAULT_OBJECT_MODEL_URI)
         

        W3C DOMの実装が常に使用できるため、このメソッドが失敗することはありません。

        戻り値:
        XPathFactoryのインスタンス。
        例外:
        RuntimeException - デフォルトのオブジェクト・モデルに対するXPathFactoryの作成時にエラーが発生した場合。
      • newInstance

        public static XPathFactory newInstance​(String uri)
                                        throws XPathFactoryConfigurationException

        指定されたオブジェクト・モデルを使用して、新しいXPathFactoryインスタンスを取得します。

        XPathFactoryオブジェクトを検索する場合、このメソッドは「クラス・ローダー」がコンテキスト・クラス・ローダーを参照する次の順番で、次の場所を調べます。

        1. システム・プロパティDEFAULT_PROPERTY_NAME+:uriが存在し、uriがこのメソッドのパラメータである場合、その値はクラス名として読み取られる。 このメソッドは、クラス・ローダーを使用してこのクラスの新しいインスタンスの作成を試み、成功した場合はそれを返します。

        2. 構成ファイル"jaxp.properties"を使用します。 このファイルは標準のProperties形式であり、通常Javaインストールのconfディレクトリにあります。 これには、実装クラスの完全修飾名が格納されています。

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

        3. ServiceLoaderクラスで定義されているサービス・プロバイダ・ローディング機能を使用して、デフォルトのロード・メカニズムを使用してサービスの実装を特定してロード: サービス・プロバイダ・ローディング機能は、現在のスレッド・コンテキスト・クラス・ローダーを使用してサービスをロードしようとします。 コンテキスト・クラス・ローダーがnullの場合、システム・クラス・ローダーが使用されます。
          使用される可能性のある各サービス・プロバイダは、メソッドisObjectModelSupported(String objectModel)を実装している必要があります。
          指定されたオブジェクト・モデルをサポートする最初に検出されたサービス・プロバイダが返されます。
          ServiceConfigurationErrorが発生した場合、XPathFactoryConfigurationExceptionがスローされます。

        4. プラットフォームのデフォルトXPathFactoryは、実装固有の方法で配置される。 W3C DOMの「プラットフォームのデフォルト」 XPathFactory、つまりDEFAULT_OBJECT_MODEL_URIが必要です。

        すべてが失敗した場合、XPathFactoryConfigurationExceptionがスローされます。

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

        プロパティ・ファイルがどのように構文解析されるかについては、Properties.load(java.io.InputStream)を参照してください。 特に、コロン「:」は、プロパティ・ファイル内でエスケープされる必要があるため、URIが適切にエスケープされていることを確認してください。 次に例を示します。

           http\://java.sun.com/jaxp/xpath/dom=org.acme.DomXPathFactory
         
        パラメータ:
        uri - 基本となるオブジェクト・モデルを識別する。 仕様は、URI DEFAULT_OBJECT_MODEL_URI、W3C DOMの場合はhttp://java.sun.com/jaxp/xpath/dom、org.w3c.domパッケージのみを定義し、実装はほかのオブジェクト・モデルのURIを自由に導入可能。
        戻り値:
        XPathFactoryのインスタンス。
        例外:
        XPathFactoryConfigurationException - 指定されたオブジェクト・モデルが使用できない場合、または構成エラーがある場合。
        NullPointerException - urinullの場合。
        IllegalArgumentException - urinullまたはuri.length()== 0の場合。
      • newInstance

        public static XPathFactory newInstance​(String uri,
                                               String factoryClassName,
                                               ClassLoader classLoader)
                                        throws XPathFactoryConfigurationException

        ファクトリ・クラス名からXPathFactoryの新しいインスタンスを取得します。 指定されたファクトリ・クラスが指定されたオブジェクト・モデルをサポートする場合、XPathFactoryが返されます。 この関数は、クラス・パスに複数のプロバイダがある場合に便利です。 どのプロバイダがロードされるかを指定できるため、アプリケーションをさらに制御できます。

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

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

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

         java -Djaxp.debug=1 YourProgram ....
         
        パラメータ:
        uri - 基本となるオブジェクト・モデルを識別する。 仕様は、URI DEFAULT_OBJECT_MODEL_URI、W3C DOMの場合はhttp://java.sun.com/jaxp/xpath/dom、org.w3c.domパッケージのみを定義し、実装はほかのオブジェクト・モデルのURIを自由に導入可能。
        factoryClassName - javax.xml.xpath.XPathFactoryの実装を提供する完全修飾のファクトリ・クラス名。
        classLoader - ファクトリ・クラスのロードに使用されるClassLoader nullの場合は、現在のThreadのコンテキストclassLoaderが、ファクトリ・クラスのロードに使用されます。
        戻り値:
        XPathFactoryの新しいインスタンス
        例外:
        XPathFactoryConfigurationException - factoryClassNamenullの場合。または、ファクトリ・クラスをロードおよびインスタンス化できない場合。または、ファクトリ・クラスがuriパラメータで指定されたオブジェクト・モデルをサポートしない場合。
        NullPointerException - urinullの場合。
        IllegalArgumentException - urinullまたはuri.length()== 0の場合。
        導入されたバージョン:
        1.6
        関連項目:
        newInstance(), newInstance(String uri)
      • isObjectModelSupported

        public abstract boolean isObjectModelSupported​(String objectModel)

        指定されたオブジェクト・モデルがこのXPathFactoryにサポートされているかを返します。

        パラメータ:
        objectModel - 返されたXPathFactoryを認識するオブジェクト・モデルを指定する。
        戻り値:
        XPathFactoryobjectModelをサポートしている場合はtrue、そうでない場合はfalse
        例外:
        NullPointerException - objectModelnullの場合。
        IllegalArgumentException - objectModel.length()== 0の場合。
      • setFeature

        public abstract void setFeature​(String name,
                                        boolean value)
                                 throws XPathFactoryConfigurationException

        このファクトリによって生成されたXPathFactoryおよびXPathの機能を設定します。

        機能名は完全修飾URIです。 実装が独自の機能を定義することもできます。 生成するXPathFactoryまたはXPathがその機能をサポートできない場合は、XPathFactoryConfigurationExceptionがスローされます。 XPathFactoryは機能の値を表示できますが、その状態を変更することはできません。

        実装はすべて、XMLConstants.FEATURE_SECURE_PROCESSING機能をサポートしている必要があります。 機能がtrueの場合は、外部関数を参照するとエラーになります。 こうした場合、実装はXPathFunctionResolverを呼び出せないので、XPathFunctionExceptionをスローします。

        パラメータ:
        name - 機能名。
        value - 機能の状態がtruefalseか。
        例外:
        XPathFactoryConfigurationException - このXPathFactoryまたはそれによって作成されるXPathがこの機能をサポートできない場合。
        NullPointerException - namenullの場合。
      • getFeature

        public abstract boolean getFeature​(String name)
                                    throws XPathFactoryConfigurationException

        名前が付けられた機能の状態を取得します。

        機能名は完全修飾URIです。 実装が独自の機能を定義することもできます。 生成するXPathFactoryまたはXPathがその機能をサポートできない場合は、XPathFactoryConfigurationExceptionがスローされます。 XPathFactoryは機能の値を表示できますが、その状態を変更することはできません。

        パラメータ:
        name - 機能名。
        戻り値:
        名前が付けられた機能の状態。
        例外:
        XPathFactoryConfigurationException - このXPathFactoryまたはそれによって作成されるXPathがこの機能をサポートできない場合。
        NullPointerException - namenullの場合。
      • setXPathVariableResolver

        public abstract void setXPathVariableResolver​(XPathVariableResolver resolver)

        デフォルトの変数リゾルバを設定します。

        このファクトリで構築されたXPathオブジェクトは、デフォルトで指定されたリゾルバを使用します。

        resolvernullの場合、NullPointerExceptionがスローされます。

        パラメータ:
        resolver - 変数リゾルバ。
        例外:
        NullPointerException - resolvernullの場合。
      • setXPathFunctionResolver

        public abstract void setXPathFunctionResolver​(XPathFunctionResolver resolver)

        デフォルトの関数リゾルバを設定します。

        このファクトリで構築されたXPathオブジェクトは、デフォルトで指定されたリゾルバを使用します。

        resolvernullの場合、NullPointerExceptionがスローされます。

        パラメータ:
        resolver - XPath関数リゾルバ。
        例外:
        NullPointerException - resolvernullの場合。
      • newXPath

        public abstract XPath newXPath​()

        XPathFactoryがインスタンス化された際に特定された基本となるオブジェクト・モデルを使用して、新しいXPathを返します。

        戻り値:
        XPathの新しいインスタンス。