Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerDataWeave には、入力データの構造をトラバースし、一致する値を返すための多数のセレクターがあります。次の例は、単一値の DataWeave セレクター (.
) を使用して、XML 要素からデータを抽出します。
開始する前に、Mule 4 アプリケーションでは DataWeave のバージョン 2.x が使用されることに注意してください。Mule 3 アプリケーションでの DataWeave については、DataWeave バージョン 1.2 の例を参照してください。 他の DataWeave バージョンの場合は、DataWeave の目次のバージョンセレクターを使用できます。
XML マークアップ言語には、1 つのルート要素が必要です。次の例では、子に同階層がないため、ルート (language
) のセレクターは子要素を抽出できます。
%dw 2.0
output application/xml
---
payload.language
<language>
<name>DataWeave</name>
</language>
<?xml version='1.0' encoding='UTF-8'?>
<name>DataWeave</name>
1 つのルートを使用する有効な XML 構造でルート要素のすべてのサブ要素を返すため、次のスクリプトは DataWeave キーを使用して新しい要素名 (myroot
) を指定し、ルート (root
) を選択してその値を返します。1 つの XML ルートを返すことに失敗したスクリプトでは、エラー Trying to output non-whitespace characters outside main element tree (in prolog or epilog)…
が生成されます。
%dw 2.0
output application/xml
---
{ myroot: payload.root }
<root>
<element>
<subelement1>SE1</subelement1>
</element>
<element>E2</element>
</root>
<?xml version='1.0' encoding='UTF-8'?>
<myroot>
<element>
<subelement1>SE1</subelement1>
</element>
<element>E2</element>
</myroot>
次の例では、子要素の名前 (name
) と単一値セレクターを使用して、その値を選択します。payload.language.name
によって子要素に移動していることがわかります。このスクリプトは、DataWeave が有効な XML を作成できるように、値のルート要素も提供します。
%dw 2.0
output application/xml
---
{ newname : payload.language.name }
<language>
<name>DataWeave</name>
<version>2.0</version>
</language>
<?xml version='1.0' encoding='UTF-8'?>
<newname>DataWeave</newname>
次の例は、インデックスを使用して、入力 XML から 2 番目の子要素の値を返します。DataWeave は子要素を配列のインデックスとして扱うため、インデックス language[1]
を使用して 2 番目の子を選択できます。結果は 1 つの XML 要素になります。
%dw 2.0
output application/xml
---
{ version : payload.language[1] }
<language>
<name>DataWeave</name>
<version>2.0</version>
</language>
<?xml version='1.0' encoding='UTF-8'?>
<version>2.0</version>
入力の複数の子要素が同じ名前である場合、インデックスを使用して子の値を選択します。次の例では、子要素のサブ要素を選択しています。
%dw 2.0
output application/xml
---
{ mysubelement : payload.root[0].subelement1 }
<root>
<element>
<subelement1>SE1</subelement1>
</element>
<element>E2</element>
</root>
<?xml version='1.0' encoding='UTF-8'?>
<mysubelement>SE1</mysubelement>