JRun には、XPath ベースの XML スクリプトユーティリティである XMLScript が含まれています。このユーティリティを使用すると、限られた一連の XPath ステートメントを実行することができます。
XMLScript を使用すると、XML ファイルの式を検索して、ノードに値を追加したり、ノードの値を書き換えたり、ノードを削除したりすることができます。また、単に、XPath 式によって生成されたノードを表示することもできます。その結果は、新規 XML ファイルに保存したり、元の XML ファイルを上書き保存したりすることができます。
> 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 の実行」 を参照してください。
[-a expression value]
[-d expression] [-s expression value] [-v expression]
<attribute name="targetHost" />
このサンプルに相当するノードに値 "localhost" を追加すると、次の行が生成されます。
<attribute name="targetHost">localhost</attribute>
XPath コマンドは、コマンド行またはスクリプトファイルを使用して XMLScript に渡すことができます。また、Java クラスファイルに XMLScript を含めると、XPath ステートメントをプログラムで実行できます。このセクションでは、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 を実行し、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 コマンドの前のハイフン (-) を省略してもかまいません。
コマンド (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) { } } }