90.12. XPathBuilder での Saxon の使用
プロジェクトへの依存関係として camel-saxon を追加する必要があります。
XPathBuilder で Saxon を使用する方が簡単になりました。以下に示すように、いくつかの方法で実行できます。
- カスタム XPathFactory の使用
- ObjectModel の使用
90.12.1. システムプロパティーを使用したカスタム XPathFactory の設定 リンクのコピーリンクがクリップボードにコピーされました!
Camel は、使用するカスタム XPathFactory を設定するために使用できる JVM システムプロパティー javax.xml.xpath.XPathFactory の読み取りをサポートするようになりました。
この単体テストは、代わりに Saxon を使用するために実行する内容を説明しています。
次のようなデフォルト以外の XPathFactory を使用する場合、Camel は INFO レベルでログを記録します。
XPathBuilder INFO Using system property javax.xml.xpath.XPathFactory:http://saxon.sf.net/jaxp/xpath/om with value:
net.sf.saxon.xpath.XPathFactoryImpl when creating XPathFactory
XPathBuilder INFO Using system property javax.xml.xpath.XPathFactory:http://saxon.sf.net/jaxp/xpath/om with value:
net.sf.saxon.xpath.XPathFactoryImpl when creating XPathFactory
Apache Xerces を使用するには、システムプロパティーを設定できます。
-Djavax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl
-Djavax.xml.xpath.XPathFactory=org.apache.xpath.jaxp.XPathFactoryImpl
90.12.2. XML DSL からの Saxon の有効化 リンクのコピーリンクがクリップボードにコピーされました!
Java DSL と同様に、XML DSL から Saxon を有効にするには、次の 3 つのオプションがあります。
カスタムファクトリーを参照する場合:
<xpath factoryRef="saxonFactory" resultType="java.lang.String">current-dateTime()</xpath>
<xpath factoryRef="saxonFactory" resultType="java.lang.String">current-dateTime()</xpath>
そして、ファクトリーで Bean を宣言します。
<bean id="saxonFactory" class="net.sf.saxon.xpath.XPathFactoryImpl"/>
<bean id="saxonFactory" class="net.sf.saxon.xpath.XPathFactoryImpl"/>
オブジェクトモデルの指定:
<xpath objectModel="http://saxon.sf.net/jaxp/xpath/om" resultType="java.lang.String">current-dateTime()</xpath>
<xpath objectModel="http://saxon.sf.net/jaxp/xpath/om" resultType="java.lang.String">current-dateTime()</xpath>
推奨されるアプローチは、次のように saxon=true を設定することです。
<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>
<xpath saxon="true" resultType="java.lang.String">current-dateTime()</xpath>