XML Operationでは、以下の操作ができます。
要素/属性の追加(固定値)
要素/属性の追加(XMLデータから情報取得)
要素の挿入
要素/属性の更新(固定値)
要素/属性の更新(XMLデータから情報取得)
要素/属性の削除
該当する要素のあり/なしによる動作を、操作別に以下に示します。
種別 | 操作 | 該当要素あり | 該当要素なし |
---|---|---|---|
要素 | 追加 | 要素を追加 | 要素を追加 |
更新 | 要素内容を更新 | エラー(例外をスロー) | |
削除 | 要素を削除 | エラー(例外をスロー) | |
挿入 | 要素を挿入 | 要素を挿入 | |
属性 | 追加 | 属性値を更新 | 属性を追加 |
更新 | 属性値を更新 | エラー(例外をスロー) | |
削除 | 属性を削除 | エラー(例外をスロー) | |
挿入 | -(操作不可) | -(操作不可) |
XPathについて
XML Operationでは、要素/属性をXPathで指定できます。
XPathは、絶対パスで指定してください。相対パスは使用できません。
複数の同一要素に対して、一括に操作することはできません。複数の同一要素に対して操作をする場合は、XML Operationを複数回呼び出してください。
配列のインデックスを指定しないと、最初に出現した要素が指定されたとみなされます。
以下は、ISI 9.0以前のXPath指定を行う場合に注意してください。
ワイルドカードは指定できません。
軸指定は“/”と“@”だけ使用できます。
XPathの指定例については、“ISI Studio ヘルプ”を参照してください。
なお、ISI 9.0以前のXPath指定を行うかどうかの設定については、“ISI 導入ガイド”を参照してください。
ペイロードに要素/属性を追加するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(add)やパラメタ)を定義します。
なお、追加する要素は、共通メッセージのヘッダから取得することも可能です。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath2”で示される位置の最後に、要素名が“company”で、値が“Fujitsu”の要素を追加しています。
: <StepInformation stepname="addXML"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="add"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath2</Parameter> <Parameter name="esi.XmlOperation.addType" valuetype="direct">element</Parameter> <Parameter name="esi.XmlOperation.position" valuetype="direct">last</Parameter> <Parameter name="esi.XmlOperation.name" valuetype="direct">company</Parameter> <Parameter name="esi.XmlOperation.value" valuetype="direct">Fujitsu</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | addXML | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“add”を指定します。 | add | |
Parameter | |||
1 | 編集するXML文書内の編集基準となるXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 編集するXML文書内の基準となる位置をXPathで指定します。 | com.fujitsu.esi.xpath2 | |
2 | 要素追加か属性追加か指定します。 | ||
name | “esi.XmlOperation.addType”を指定します。 | esi.XmlOperation.addType | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 要素追加か属性追加かを指定します。
| element(要素) | |
3 | 追加位置を指定します。 | ||
name | “esi.XmlOperation.position”を指定します。 | esi.XmlOperation.position | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 追加位置を指定します。ただし、属性追加を指定した場合は、必ず最後に追加され、指定した値は無効となります。
| last(最後) | |
4 | 追加する要素名/属性名を指定します。 | ||
name | “esi.XmlOperation.name”を指定します。 | esi.XmlOperation.name | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 追加する要素名/属性名を指定します。 | company | |
5 | 追加する要素内容/属性値を指定します。 | ||
name | “esi.XmlOperation.value”を指定します。 | esi.XmlOperation.value | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | 追加する要素内容/属性値を指定します。 | Fujitsu |
共通メッセージのヘッダに格納されている値を、追加する要素内容・属性値として追加する場合は、パラメタ“esi.XmlOperation.value”に共通メッセージのヘッダから取得した値を指定してください。
XMLデータから情報を取得して、ペイロードに要素/属性を追加するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(addFromXML)やパラメタ)を定義します。
追加する要素/属性は、XMLデータから取得します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath2”で示される位置の前に、以下の属性を追加しています。
属性名:“company”
値:シーケンス起動時のペイロードの“com.fujitsu.esi.xpath1”で示される値
: <StepInformation stepname="addFromXML"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="addFromXML"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath2</Parameter> <Parameter name="esi.XmlOperation.addFromAnotherXMLType" valuetype="direct">attribute</Parameter> <Parameter name="esi.XmlOperation.position" valuetype="direct">before</Parameter> <Parameter name="esi.XmlOperation.name" valuetype="direct">company</Parameter> <Parameter name="esi.XmlOperation.srcXML" valuetype="esi.payload">@start</Parameter> <Parameter name="esi.XmlOperation.srcXPath" valuetype="esi.header">com.fujitsu.esi.xpath1</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | addFromXML | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“addFromXML”を指定します。 | addFromXML | |
Parameter | |||
1 | 編集するXML文書内の編集基準となるXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 編集するXML文書内の基準となる位置をXPathで指定します。 | com.fujitsu.esi.xpath2 | |
2 | 要素追加か属性追加か指定します。 | ||
name | “esi.XmlOperation.addFromAnotherXMLType”を指定します。 | esi.XmlOperation.addFromAnotherXMLType | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 要素追加か属性追加か指定します。
| attribute(属性) | |
3 | 追加位置を指定します。 | ||
name | “esi.XmlOperation.position”を指定します。 | esi.XmlOperation.position | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 追加位置を指定します。ただし、属性追加を指定した場合は、必ず最後に追加され、指定した値は無効となります。
| before(前) | |
4 | 追加する要素名/属性名を指定します。 | ||
name | “esi.XmlOperation.name”を指定します。 | esi.XmlOperation.name | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 要素名/属性名を指定します。 | company | |
5 | 追加する要素/属性が格納されているXML文書を指定します。 | ||
name | “esi.XmlOperation.srcXML”を指定します。 | esi.XmlOperation.srcXML | |
valuetype | パラメタに指定する値のタイプ“esi.payload”(共通メッセージ内のペイロード)を指定します。 | esi.payload | |
値 | 追加する要素/属性が格納されているXML文書を指定します。 | @start(シーケンス起動時のペイロード) | |
6 | 追加する要素/属性が格納されている位置を指すXPath | ||
name | “esi.XmlOperation.srcXPath”を指定します。 | esi.XmlOperation.srcXPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 追加する要素/属性が格納されている位置を指すXPathを指定します。 | com.fujitsu.esi.xpath1 |
ペイロードに要素を挿入するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(insert)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath2”で示される位置の前に、シーケンス起動時のペイロードの“com.fujitsu.esi.xpath1”で示される要素内容を追加しています。
: <StepInformation stepname="insert"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="insert"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath2</Parameter> <Parameter name="esi.XmlOperation.position" valuetype="direct">before</Parameter> <Parameter name="esi.XmlOperation.srcXML" valuetype="esi.payload">@start</Parameter> <Parameter name="esi.XmlOperation.srcXPath" valuetype="esi.header">com.fujitsu.esi.xpath1</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | insert | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“insert”を指定します。 | insert | |
Parameter | |||
1 | 編集するXML文書内の編集基準となるXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 編集するXML文書内の基準となる位置をXPathで指定します。 | com.fujitsu.esi.xpath2 | |
2 | 挿入位置を指定します。 | ||
name | “esi.XmlOperation.position”を指定します。 | esi.XmlOperation.position | |
valuetype | パラメタに指定する値のタイプ“direct”(固定値)を指定します。 | direct | |
値 | 追加位置を指定します。
| before(前) | |
3 | 挿入する要素が格納されているXML文書を指定します。 | ||
name | “esi.XmlOperation.srcXML”を指定します。 | esi.XmlOperation.srcXML | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.payload(共通メッセージ内のペイロード) | |
値 | 挿入する要素が格納されているXML文書を指定します。 | @start(シーケンス起動時のペイロード) | |
4 | 挿入する要素の位置を指すXPathを指定します。 | ||
name | “esi.XmlOperation.srcXPath”を指定します。 | esi.XmlOperation.srcXPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 挿入する要素が格納されている位置を指すXPathを指定します。 | com.fujitsu.esi.xpath1 |
ペイロードの要素/属性を更新するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(modify)やパラメタ)を定義します。
なお、更新する要素/属性は、共通メッセージのヘッダから取得することも可能です。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath2”で示される位置の要素内容/属性値を“Fujitsu”に更新しています。
: <StepInformation stepname="modifyXML"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="modify"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath2</Parameter> <Parameter name="esi.XmlOperation.value" valuetype="direct">Fujitsu</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | modifyXML | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“modify”を指定します。 | modify | |
Parameter | |||
1 | 編集するXML文書内の編集基準となるXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 編集するXML文書内の基準となる位置をXPathで指定します。 | com.fujitsu.esi.xpath2 | |
2 | 更新する要素内容/属性値を指定します。 | ||
name | “esi.XmlOperation.value”を指定します。 | esi.XmlOperation.value | |
valuetype | パラメタに指定する値のタイプを指定します。 | direct(固定値) | |
値 | 更新する要素内容/属性値を指定します。 | Fujitsu |
共通メッセージのヘッダに格納されている値を、更新する要素内容・属性値として更新する場合は、パラメタ“esi.XmlOperation.value”に共通メッセージのヘッダから取得した値を指定してください。
XMLデータから情報を取得して、ペイロードの要素/属性を更新するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(modifyFromXML)やパラメタ)を定義します。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath2”で示される要素内容/属性値を、シーケンス起動時のペイロードの“com.fujitsu.esi.xpath1”で示される要素内容/属性値に更新しています。
: <StepInformation stepname="modifyFromXML"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="modifyFromXML"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath2</Parameter> <Parameter name="esi.XmlOperation.srcXML" valuetype="esi.payload">@start</Parameter> <Parameter name="esi.XmlOperation.srcXPath" valuetype="esi.header">com.fujitsu.esi.xpath1</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | modifyFromXML | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“modifyFromXML”を指定します。 | modifyFromXML | |
Parameter | |||
1 | 編集するXML文書内の編集基準となるXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 編集するXML文書内の基準となる位置をXPathで指定します。 | com.fujitsu.esi.xpath2 | |
2 | 更新する要素内容/属性値が格納されているXML文書を指定します。 | ||
name | “esi.XmlOperation.srcXML”を指定します。 | esi.XmlOperation.srcXML | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.payload(共通メッセージ内のペイロード) | |
値 | 更新する要素内容/属性値が格納されているXML文書を指定します。 | @start(シーケンス起動時のペイロード) | |
3 | 更新する要素内容/属性値が格納されている位置を指すXPath | ||
name | “esi.XmlOperation.srcXPath”を指定します。 | esi.XmlOperation.srcXPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 更新する要素内容/属性値を指定します。 | com.fujitsu.esi.xpath1 |
ペイロードの要素/属性を削除するには、以下のようにします。
シーケンス定義のシーケンスブロックに、メディエータファンクション(XMLOperation)の呼出しを定義します。
シーケンス定義の実行ステップ情報に、XMLOperationの呼出し情報(メソッド(delete)やパラメタ)を定義します。
削除する要素の子要素も同時に削除されます。
指定例
実行ステップ情報の指定例は、以下のとおりです。この例では、現在のペイロードの“com.fujitsu.esi.xpath3”で示される要素/属性を削除しています。
: <StepInformation stepname="delete"> <MediatorFunction name="XMLOperation"> <Method type="execute" name="delete"> <ParameterList> <Parameter name="esi.XmlOperation.XPath" valuetype="esi.header">com.fujitsu.esi.xpath3</Parameter> </ParameterList> </Method> </MediatorFunction> </StepInformation> : |
キー名 | 説明 | 指定例 | |
---|---|---|---|
StepInformation | |||
stepname | ステップ名を指定します。シーケンスブロックに指定したステップ名を指定してください。 | delete | |
MediatorFunction | |||
name | メディエータファンクション名“XMLOperation”を指定します。 | XMLOperation | |
Method | |||
type | 実行種別“execute”を指定します。 | execute | |
name | XMLOperationのメソッド名“delete”を指定します。 | delete | |
Parameter | |||
1 | 削除する要素内容/属性値の位置を指すXPathを指定します。 | ||
name | “esi.XmlOperation.XPath”を指定します。 | esi.XmlOperation.XPath | |
valuetype | パラメタに指定する値のタイプを指定します。 | esi.header(共通メッセージ内のヘッダパラメタ) | |
値 | 削除する要素内容/属性値を指定します。 | com.fujitsu.esi.xpath3 |