XMLScript

JRun には、XPath ベースの XML スクリプトユーティリティである XMLScript が含まれています。このユーティリティを使用すると、限られた一連の XPath ステートメントを実行することができます。

XMLScript を使用すると、XML ファイルの式を検索して、ノードに値を追加したり、ノードの値を書き換えたり、ノードを削除したりすることができます。また、単に、XPath 式によって生成されたノードを表示することもできます。その結果は、新規 XML ファイルに保存したり、元の XML ファイルを上書き保存したりすることができます。

XMLScript シンタックス

XMLScript シンタックスは次のとおりです。

> java -classpath classpath XMLScript [-i input-file] [-o output-file] 
[-f script-file] -[a|d|s|v statement ...]

XMLScript は <JRun のルートディレクトリ>/lib/jrun.jar ファイルにあります。XMLScript を使用するには、クラスパスに jrun.jar を含める必要があります。Windows プラットホームの場合、<JRun のルートディレクトリ>/bin ディレクトリの XMLScript.exe ファイルをダブルクリックして XMLScript を起動します。

input-file 引数を指定すると、標準入力がデフォルトになります。

output-file 引数を指定すると、input-file の値がデフォルトになります。ダッシュを指定すると、標準出力がデフォルトになります。

script-file 引数は、XPath ステートメントのリストを含んでいるファイルへのパスを指定します。スクリプトファイルを指定しないと、XMScript は、コマンド行に指定された XPath ステートメントを実行します。スクリプトファイルを使用して XMLScript を実行する方法については、 「スクリプトファイルを使用した XMLScript の実行」 を参照してください。

XPath ステートメントは形式は次のとおりです。

[-a expression value]
[-d expression]
[-s expression value]
[-v expression]
XPath ステートメントの記述方法の詳細については、http://www.w3.org/TR/xpath をご覧ください。

XMLScript の使用

XPath コマンドは、コマンド行またはスクリプトファイルを使用して XMLScript に渡すことができます。また、Java クラスファイルに XMLScript を含めると、XPath ステートメントをプログラムで実行できます。このセクションでは、XMLScript ユーティリティの使用例について説明します。

コマンド行を使用した XMLScript の実行

XMLScript をコマンド行で実行するには、次のサンプルのように、ステートメントの式および値を引数として渡します。

>java -classpath c:/jrun4/lib/jrun.jar jrunx.xml.XMLScript -i
c:/jrun4/servers/default/server-inf/jrun.xml -s
//service[@name='WebService']/attribute[@name='port']/
text() 8842

このサンプルは、WebService という名前の service 要素を探し、そのサービスの port 属性を 8842 に置き換えます。次のような XML が生成されます。

<service class="jrun.servlet.http.WebService" name="WebService">
  <attribute name="port">8842</attribute>
</service>

メモ:  XMLScript ステートメントをコマンド行で使用する際は、引数を引用符 (') で囲んでください。

コマンド行では、任意の数のステートメントを渡すことができます。次のコマンドを指定すると、次の 2 つのステートメントが実行されます。

>java -classpath c:/jrun4/lib/jrun.jar jrunx.xml.XMLScript 
-i c:/jrun4/servers/default/server-inf/jrun.xml 
-s //service[@name='ClusterManager']/
attribute[@name='enabled']/text() true -s //
service[@name='ClusterManager']/ 
attribute[@name='clusterDomain']/text() newserver

スクリプトファイルを使用した XMLScript の実行

XMLScript を実行し、XPath コマンド、式、および値を含んでいるスクリプトファイルを渡すことができます。これにより、任意の数の XPath ステートメントを一度に実行できます。 次のサンプルでは、scriptfile.txt ファイルから XPath ステートメントを抽出し、inputfile.xml ファイルに対してそれらのステートメントを実行します。

> java -classpath c:/jrun4/lib/jrun.jar jrunx.xml.XMLScript -i 
inputfile.xml -f scriptfile.txt

XPath ステートメントを含んでいる XMLScript スクリプトファイルのサンプルは次のとおりです。

-s //service[@name=¥"WebService¥"]/attribute[@name=¥"port¥"]/text() 
8142
-s //service[@name='WebService']/attribute[@name='port']/text() 8842
-s //service[@name='ClusterManager']/attribute[@name='enabled']/
text() true
-a //service[@name=¥"LauncherInfo¥"]/attribute[@name=¥"vmArgs¥"] 
-Xms128

スクリプトファイルを使用して XMLScript を実行する場合は、a または s コマンドの前のハイフン (-) を省略してもかまいません。

Java クラスでの XMLScript の使用

XMLScript は次のメソッドを公開します。

コマンド (Array)

この Array オブジェクトには、XPath ステートメントの各コマンド、式、および値が個々の要素に含まれています。XMLScript をプログラムで使用するには、jrunx.xml.XMLScript パッケージをインポートする必要があります。Java クラスをコンパイルするには、クラスパスに jrun.jar ファイルを含める必要があります。

次のコードは、Java クラスで XMLScript を使用する方法を示しています。

import java.util.*;
import java.io.*;
import jrunx.xml.XMLScript;
public class XMLScriptTest {
 public static void main() throws Exception {
  String xmlinfile = "c:/jrun4/servers/default/SERVER-INF/jrun.xml";
  String xmloutfile = "c:/jrun4/servers/newserver/SERVER-INF/
jrun.xml";
  ArrayList args = new ArrayList();
  args.add("-i");
  args.add(xmlinfile);
  args.add("-o");
  args.add(xmloutfile);
  String port = "8142";
  args.add("-s");
  args.add("//service[@name=¥"WebService¥"]/
attribute[@name=¥"port¥"]/text()");
  args.add(port);
  String vmarg = "-Xms128";
  args.add("-a");
  args.add("//service[@name=¥"LauncherInfo¥"]/
attribute[@name=¥"vmArgs¥"]");
  args.add(vmarg);
  //引数を持つ XMLScript を実行します。
  String[] scriptArgs = new String[args.size()];
  args.toArray(scriptArgs);
  try {
   XMLScript xs = new XMLScript();
   xs.command(scriptArgs);
  } catch (Exception e) {
  }
 }
}