JavaTM Platform
Standard Ed. 6

javax.xml.xpath
クラス XPathFactory

java.lang.Object
  上位を拡張 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

フィールドの概要
static String DEFAULT_OBJECT_MODEL_URI
          デフォルトのオブジェクトモデル URI です。
static String DEFAULT_PROPERTY_NAME
          JAXP 仕様に従ったデフォルトのプロパティー名です。
 
コンストラクタの概要
protected XPathFactory()
          newInstance()newInstance(String uri)、または newInstance(String uri, String factoryClassName, ClassLoader classLoader) として protected コンストラクタを使用して、XPathFactory の新しいインスタンスを作成する必要があります。
 
メソッドの概要
abstract  boolean getFeature(String name)
          名前が付けられた機能の状態を取得します。
abstract  boolean isObjectModelSupported(String objectModel)
          指定されたオブジェクトモデルがこの XPathFactory にサポートされているかを返します。
static XPathFactory newInstance()
          デフォルトのオブジェクトモデル、DEFAULT_OBJECT_MODEL_URI を使用して、新しい XPathFactory インスタンスを取得します。
static XPathFactory newInstance(String uri)
          指定されたオブジェクトモデルを使用して、新しい XPathFactory インスタンスを取得します。
static XPathFactory newInstance(String uri, String factoryClassName, ClassLoader classLoader)
          ファクトリクラス名から XPathFactory の新しいインスタンスを取得します。
abstract  XPath newXPath()
          XPathFactory がインスタンス化された際に特定された基本となるオブジェクトモデルを使用して、新しい XPath を返します。
abstract  void setFeature(String name, boolean value)
          このファクトリによって生成された XPathFactory および XPath の機能を設定します。
abstract  void setXPathFunctionResolver(XPathFunctionResolver resolver)
          デフォルトの関数リゾルバを設定します。
abstract  void setXPathVariableResolver(XPathVariableResolver resolver)
          デフォルトの変数リゾルバを設定します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

DEFAULT_PROPERTY_NAME

public static final String DEFAULT_PROPERTY_NAME

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

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

DEFAULT_OBJECT_MODEL_URI

public static final String DEFAULT_OBJECT_MODEL_URI

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

関連項目:
定数フィールド値
コンストラクタの詳細

XPathFactory

protected XPathFactory()

newInstance()newInstance(String uri)、または newInstance(String uri, String factoryClassName, ClassLoader classLoader) として protected コンストラクタを使用して、XPathFactory の新しいインスタンスを作成する必要があります。

メソッドの詳細

newInstance

public static final XPathFactory newInstance()

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

 

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

   newInstance(DEFAULT_OBJECT_MODEL_URI)
 
 

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

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

newInstance

public static final XPathFactory newInstance(String uri)
                                      throws XPathFactoryConfigurationException

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

 

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

  1. システムプロパティー DEFAULT_PROPERTY_NAME + :uri が存在し、uri がこのメソッドのパラメータである場合、その値はクラス名として読み取られる。このメソッドは、クラスローダーを使用してこのクラスの新しいインスタンスを作成を試み、成功した場合はそれを返す
  2. ${java.home}/lib/jaxp.properties が読み取られ、上記のシステムプロパティーであるキーに関連付けられた値が検索される。値が存在すれば、上記のように値が処理される
  3. クラスローダーは、リソースディレクトリ META-INF/services 内の jjavax.xml.xpath.XPathFactory に一致するサービスプロバイダのプロバイダ構成ファイルを要求されます。ファイル形式と構文解析規則については、JAR ファイルの仕様を参照してください。各サービスプロバイダは、次のメソッドを実装している必要があります。
           isObjectModelSupported(String objectModel)
         
    指定されたオブジェクトモデルをサポートするクラスローダー内で最初に検出されたサービスプロバイダが返されます。
  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 が返されます。この機能は、classpath に複数のプロバイダが存在する場合に便利です。ロードするプロバイダを指定できるので、アプリケーションで詳細に制御できるようになります。

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

 

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 - ファクトリクラスのロードに使用する ClassLoadernull の場合、 ファクトリクラスのロードには現在の 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 の新しいインスタンス

JavaTM Platform
Standard Ed. 6

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

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