MIME タイプ: application/xml
ID: xml
XML データ構造は、他のオブジェクト、文字列、または null 値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では namespaces、CData、xsi:types がネイティブにサポートされます。
XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。
-
インデックス付き
-
メモリ内
-
ストリーミング
DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、「DataWeave 解析戦略」を参照してください。
CData カスタム型
CData は、文字データ (CData) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。CData 型は、CData ブロック内でコンテンツをラップするか、CData ブロック内に入力文字列があるかどうかを確認するように XML ライターに指示します。DataWeave では、CData は型 String から継承されます。
例
次の例は、XML 形式の使用方法を示しています。
さまざまなデータ形式で使用可能なリーダーとライターのプロパティについての詳細は、「サポートされるデータ形式」を参照してください。
例: 入力 XML データをストリーミング
次の例は、XML ストリーミングのセットアップ方法を示しています。ユーザーは次のリーダープロパティを指定する必要があります。
-
streaming=true -
collectionPath="root.repeated"
collectionPath 設定では、ストリーミングする要素を選択します。
ストリーミング時は、XML パーサーはすべての XML コンテンツがなくてもコンテンツの処理を開始できます。
入力
次の XML が DataWeave ソースへの入力ペイロードとして機能します。これは myXML.xml ファイルのコンテンツであるとします。
<root>
<text>
Text
</text>
<repeated>
<user>
<name>Mariano</name>
<lastName>de Achaval</lastName>
<age>36</age>
</user>
<user>
<lastName>Shokida</lastName>
<name>Leandro</name>
<age>30</age>
</user>
<user>
<age>29</age>
<name>Ana</name>
<lastName>Felissati</lastName>
</user>
<user>
<age>29</age>
<lastName>Chibana</lastName>
<name>Christian</name>
</user>
</repeated>
</root>
ソース
DataWeave スクリプトのリーダープロパティ設定は、入力をストリーミングして反復キーを処理するように XML リーダーに指示します。スクリプトは DataWeave map 関数を使用して反復キーを反復処理します。
%dw 2.0
var myInput readUrl('classpath://myXML.xml', 'application/xml', {streaming:true, collectionPath: "root.repeated"})
output application/dw
---
myInput.root.repeated.*user map {
n: $.name,
l: $.lastName,
a: $.age
}
例: XML の null または空の文字列
XML で null 値を表す標準の方法はないため、nil 属性が true に設定されている場合、リーダーは値を null にマップします。
例: 欠落している XML 値に対して null 値を出力
XML リーダープロパティ nullValueOn は、値 blank (デフォルト) または empty を受け入れます。
次の例では nullValueOn のデフォルトを使用するため、title および author 要素の値を null にマップします。
入力
次の XML が DataWeave ソースへの入力として機能します。title および author 要素の値がないことに注意してください。
この入力はファイル myInput.xml 内のコンテンツであるとします。
<book>
<author></author>
<title>
</title>
</book>
例: 欠落している XML 値に対して null 値を出力
XML リーダープロパティ nullValueOn は、値 blank (デフォルト) または empty を受け入れます。
次の例では、XML リーダープロパティ nullValueOn が empty に設定されているため、title 要素の値を String にマップし、author 要素の値を null にマップします。
入力
次の XML が DataWeave ソースへの入力として機能します。title および author 要素の値がないことに注意してください。この 2 つの要素の違いは、開始タグと終了タグ間のスペースにあります。title 要素のタグは改行 (非表示文字 \n) によって分割されていますが、author 要素のタグはどの文字によっても分割されていません。
この入力はファイル myInput.xml 内のコンテンツであるとします。
<book>
<author></author>
<title>
</title>
</book>
例: XML 属性を DataWeave (dw) 形式で表す
次の例では、XML 属性を正規 DataWeave 表現 (application/dw 形式および MIME タイプ) にマップします。
入力
この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。
<users>
<company>MuleSoft</company>
<user name="Leandro" lastName="Shokida"/>
<user name="Mariano" lastName="Achaval"/>
</users>
例: XML 名前空間を DataWeave (dw) 形式で表す
次の例では、XML 名前空間を正規 DataWeave 表現 (application/dw 形式および MIME タイプ) にマップします。
入力
この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 名前空間が含まれていることに注意してください。
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="https://www.w3schools.com/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
ソース
DataWeave スクリプトは XML 入力ペイロードを DataWeave (dw) 形式および MIME タイプに変換します。
%dw 2.0
output application/dw
---
payload
出力
出力は、XML 入力が DataWeave (dw) 形式でどのように表されるかを示しています。XML からの名前空間がどのように表されているかに注意してください。
ns h http://www.w3.org/TR/html4/
ns f https://www.w3schools.com/furniture
---
{
root: {
h#table: {
h#tr: {
h#td: "Apples",
h#td: "Bananas"
}
},
f#table: {
f#name: "African Coffee Table",
f#width: "80",
f#length: "120"
}
}
}
例: CData 要素を作成
次の例は、CData 型を使用して XML 出力内で CData 要素を作成する方法を示しています。
例: String に CData があるかどうかを確認
次の例は、提供された String 値が CData かどうかを示しています。
入力
この XML が DataWeave ソースへの入力ペイロードとして機能します。test 要素に CData ブロックが含まれていることに注意してください。
<?xml version='1.0' encoding='UTF-8'?>
<test><![CDATA[A text <a>]]></test>
例: inlineCloseOn ライタープロパティを使用
次の例では、inlineCloseOn ライタープロパティを値 none と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。
例: 反復 JSON キーを反復 XML 要素に変換
XML は反復 (無制限) 要素を使用してコレクションをエンコードします。DataWeave では、同じキーを繰り返して無制限の要素を表します。
次の例は、オブジェクトの JSON 配列内の反復キーを反復 XML 要素に変換する方法を示しています。
入力
この JSON 入力が DataWeave ソースへのペイロードとして機能します。配列内の name キーが反復していることに注意してください。
{
"friends": [
{"name": "Mariano"},
{"name": "Shoki"},
{"name": "Tomo"},
{"name": "Ana"}
]
}
ソース
DataWeave スクリプトは、friends キーの値を選択します。
%dw 2.0
output application/xml
---
friends: {
(payload.friends)
}
出力
出力では、name キーが XML 要素として表されます。
<?xml version='1.0' encoding='UTF-8'?>
<friends>
<name>Mariano</name>
<name>Shoki</name>
<name>Tomo</name>
<name>Ana</name>
</friends>
「自己終了 XML タグの出力」の例も参照してください。
例: XML 要素を JSON 形式に変換して文字を置換
この例では、Id、Name、Address など、従業員の詳細を含む XML ファイルを反復処理して、ファイルを JSON 形式に変換します。DataWeave スクリプトでは、replace 関数を使用して各 Address 要素を反復処理し、文字 - と / を空白スペースに置き換えます。
入力
この XML 入力が DataWeave ソースへのペイロードとして機能します。Address 要素に - と / の文字が含まれていることに注意してください。
<?xml version='1.0' encoding='UTF-8'?>
<root>
<employees>
<Id>1</Id>
<Name>Mule</Name>
<Address>MuleSoft Avenue - 123</Address>
</employees>
<employees>
<Id>2</Id>
<Name>Max</Name>
<Address>MuleSoft Avenue-456/5/e</Address>
</employees>
</root>
ソース
次の DataWeave スクリプトでは、ペイロード要素を反復処理して、オブジェクトへのマッピングを実行します。payload01.Address replace /([\-\,\/])/ with " " の指示により、- と / の文字が空白スペースに置き換えられます。
%dw 2.0
output application/json
---
payload.root.*employees map ((payload01 , indexOfPayload01) ->
{ Id: payload01.Id as String, Name: payload01.Name as String, Address: payload01.Address replace /([\-\,\/])/ with " " }
)
Configuration のプロパティ
DataWeave では、この形式の以下の設定プロパティがサポートされています。
Reader のプロパティ
この形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
コレクションが配置されているドキュメント内の場所へのパスを設定します。ストリーミングする要素の場所を識別するパス式を受け入れます。 |
|
|
|
外部エンティティを処理するかどうかを示します。デフォルトでは、XML 外部エンティティ (XXE) 攻撃を回避するために無効になっています。 有効な値は、 |
|
|
|
しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードの場合、DataWeave ではメモリ内リーダーを使用します。 有効な値は、 |
|
|
|
XML 属性で受け入れられる最大文字数を設定します。 Mule 4.2.1 以降で使用できます。 |
|
|
|
エンティティ拡張の最大数を設定します。この制限は Billion Laughs 攻撃の回避に役立ちます。 |
|
|
|
空または空白のテキストを含む要素を 有効な値は |
|
|
|
使用する XML パーサーの最適化の種別を設定します。 有効な値は、 |
|
|
|
有効な値は、 |
|
|
|
DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。Mule システムプロパティ 有効な値は、 |
Writer のプロパティ
この形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
| パラメーター | 型 | デフォルト | 説明 |
|---|---|---|---|
|
|
|
バッファライターのサイズ。 |
|
|
|
出力 XML のデフォルトの名前空間を指定します。 |
|
|
|
有効な値は、 |
|
|
|
有効な値は、 |
|
|
|
出力で使用する文字セット (UTF-8 など)。 |
|
|
|
有効な値は、 |
|
|
|
有効な値は、 |
|
|
|
デフォルトでは出力をインデントして読みやすくします。 有効な値は、 |
|
|
|
インラインの終了タグを出力します。この値が 有効な値は、 |
|
|
|
有効な値は |
|
|
|
指定されたデータ構造の
有効な値は |
|
|
|
有効な値は、 |
|
|
|
XML のルート要素内の宣言する名前空間をマークします。
|
|
|
|
このプロパティが 有効な値は、 |