Flex Gateway新着情報
Governance新着情報
Monitoring API ManagerMIME タイプ: application/xml
ID: xml
XML データ構造は、他のオブジェクト、文字列、または null
値が含まれている可能性がある DataWeave オブジェクトにマップされます。XML で無制限要素を使用してコレクションを表します。コレクションは DataWeave オブジェクトの反復キーにマップされます。また、DataWeave では namespaces
、CData
、xsi:types
がネイティブにサポートされます。
XML 入力の DataWeave リーダーでは、次の解析戦略がサポートされます。
インデックス付き
メモリ内
ストリーミング
DataWeave リーダーおよびライターでこの形式に適用できる解析戦略を理解するには、「DataWeave 解析戦略」を参照してください。
CData
は、文字データ (CDATA) ブロックを識別するために使用する XML のカスタム DataWeave データ型です。CData
型は、CDATA
ブロック内でコンテンツをラップするか、CDATA
ブロック内に入力文字列があるかどうかを確認するように XML ライターに指示します。DataWeave では、CData
は型 String
から継承されます。
次の例は、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
値を表す標準の方法はないため、nil
属性が true
に設定されている場合、リーダーは値を null
にマップします。
null
値を出力XML リーダープロパティ nullValueOn
は、値 blank
(デフォルト) または empty
を受け入れます。
次の例では nullValueOn
のデフォルトを使用するため、title
および author
要素の値を null
にマップします。
次の XML が DataWeave ソースへの入力として機能します。title
および author
要素の値がないことに注意してください。
この入力はファイル myInput.xml
内のコンテンツであるとします。
<book>
<author></author>
<title>
</title>
</book>
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 表現 (application/dw
形式および MIME タイプ) にマップします。
この XML が DataWeave ソースへの入力ペイロードとして機能します。入力に XML 属性が含まれていることに注意してください。
<users>
<company>MuleSoft</company>
<user name="Leandro" lastName="Shokida"/>
<user name="Mariano" lastName="Achaval"/>
</users>
次の例では、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
型を使用して 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
と共に使用して、入力からのキー-値ペアに基づいてアクションを実行します。
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 タグの出力」の例も参照してください。
この例では、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 " " }
)
DataWeave では、XML 形式に対して次の設定プロパティがサポートされます。
XML 形式は、入力データを読み取るための指示を提供するプロパティを受け入れます。
パラメーター | 型 | デフォルト | 説明 |
---|---|---|---|
|
|
|
コレクションが配置されているドキュメントへのパス。ストリーミングする要素の場所を識別するパス式を指定します。「例: 入力 XML データをストリーミング」を参照してください。 |
|
|
|
外部エンティティを処理する必要があるかどうかを示します。デフォルトでは、これは XXE 攻撃を回避するために無効になっています。
有効な値は、 |
|
|
|
DataWeave では、しきい値に達したとき、デフォルトでインデックス付きリーダーを使用します。US-ASCII、UTF-8、および ISO-8859-1 エンコードのみをサポートします。他のエンコードでは、 |
|
|
|
XML 属性で受け入れられる最大文字数を設定します。Mule 4.2.1 以降で使用できます。 |
|
|
|
エンティティ拡張の最大数。 この制限は、Billion Laughs 攻撃を回避するために設定されます。 |
|
|
|
空または空白のテキストを含む要素を |
|
|
|
XML パーサーの設定方法を示します。有効な値は、 |
|
|
|
入力をストリーミングするかどうかを示します (エントリを順次アクセスする場合のみ使用します)。有効なオプションは、 |
|
|
|
DTD サポートを有効または無効にします。無効にすると、内部および外部のサブセットがスキップされ、処理されません。有効な値は、 |
XML 形式は、出力データを書き込むための指示を提供するプロパティを受け入れます。
パラメーター | 型 | デフォルト | 説明 |
---|---|---|---|
|
|
|
バッファライターのサイズ。 |
|
|
|
使用するライターのエンコード。 |
|
|
|
|
|
|
|
キャリッジリターン (CR) をエスケープするかどうか。
有効な値は、 |
|
|
|
コードをインデントして読みやすくするか、コードを 1 行に圧縮するかを示します。
有効な値は、 |
|
|
|
ライターでどのような場合にインラインの終了タグを使用し、どのような場合に開始終了タグを使用するかを示します。
有効な値は、 |
|
|
|
有効な値は、 |
|
|
|
指定されたデータ構造の |
|
|
|
XML ヘッダーの宣言を書き込むかどうかを示します。有効な値は、 |
|
|
|
値が |