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 ヘッダーの宣言を書き込むかどうかを示します。有効な値は、  | 
  | 
  | 
  | 
値が   |