項目の値の変更

次の DataWeave の例は、​update​ と ​mask​ を使用していくつかの XML 要素を設定する方法を示しています。

開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave バージョン 1 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

例: Update を使用した値の変更

この例では、以下を使用します。

  • update​ を使用してペイロードの指定項目を新しい値で更新する

  • 単一値セレクター (​.​) と複数値セレクター (​.*​) を使用してペイロードを操作し、更新する項目を選択する

次のスクリプトは ​update​ 演算子の動作を示しています。この例では、ペイロードの各 ​user​ を新しい ​user​ で更新することで、新しい ​users​ リストを作成しています。変換では、​first_name​、​middle_name​、​last_name​ を大文字の値に変換します。

DataWeave スクリプト:
%dw 2.0
output application/xml
---
payload update {
  case user at .users.*user -> user update {
    case .personal_information.first_name -> upper(user.personal_information.first_name)
    case .personal_information.middle_name -> upper(user.personal_information.middle_name)
    case .personal_information.last_name -> upper(user.personal_information.last_name)
  }
}
入力 XML ペイロード:
<users>
    <user>
        <personal_information>
            <first_name>Emiliano</first_name>
            <middle_name>Romoaldo</middle_name>
            <last_name>Lesende</last_name>
            <ssn>001-08-84382</ssn>
        </personal_information>
        <login_information>
            <username>3miliano</username>
            <password>mypassword1234</password>
        </login_information>
    </user>
    <user>
        <personal_information>
            <first_name>Mariano</first_name>
            <middle_name>Toribio</middle_name>
            <last_name>de Achaval</last_name>
            <ssn>002-05-34738</ssn>
        </personal_information>
        <login_information>
            <username>machaval</username>
            <password>mypassword4321</password>
        </login_information>
    </user>
</users>
出力 XML:
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <personal_information>
      <first_name>EMILIANO</first_name>
      <middle_name>ROMOALDO</middle_name>
      <last_name>LESENDE</last_name>
      <ssn>001-08-84382</ssn>
    </personal_information>
    <login_information>
      <username>3miliano</username>
      <password>mypassword1234</password>
    </login_information>
  </user>
  <user>
    <personal_information>
      <first_name>MARIANO</first_name>
      <middle_name>TORIBIO</middle_name>
      <last_name>DE ACHAVAL</last_name>
      <ssn>002-05-34738</ssn>
    </personal_information>
    <login_information>
      <username>machaval</username>
      <password>mypassword4321</password>
    </login_information>
  </user>
</users>

例: Mask を使用した値の変更

DataWeave は、各項目へのパスを指定せずに完全に値をマスクする方法を提供しています。

  • mask​ は、入力中で選択された名前と一致するすべての単純要素を、指定されたマスクで更新します。

次の例では、​ssn​ と ​password​ の値をアスタリスク文字列 (​****​) でマスクします

DataWeave スクリプト:
%dw 2.0
import * from dw::util::Values
output application/xml
---
(payload mask "ssn" with "****") mask "password" with "****"
入力 XML ペイロード:
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <personal_information>
      <first_name>EMILIANO</first_name>
      <middle_name>ROMOALDO</middle_name>
      <last_name>LESENDE</last_name>
      <ssn>001-08-84382</ssn>
    </personal_information>
    <login_information>
      <username>3miliano</username>
      <password>mypassword1234</password>
    </login_information>
  </user>
  <user>
    <personal_information>
      <first_name>MARIANO</first_name>
      <middle_name>TORIBIO</middle_name>
      <last_name>DE ACHAVAL</last_name>
      <ssn>002-05-34738</ssn>
    </personal_information>
    <login_information>
      <username>machaval</username>
      <password>mypassword4321</password>
    </login_information>
  </user>
</users>
出力 XML:
<?xml version="1.0" encoding="UTF-8"?>
<users>
  <user>
    <personal_information>
      <first_name>EMILIANO</first_name>
      <middle_name>ROMOALDO</middle_name>
      <last_name>LESENDE</last_name>
      <ssn>****</ssn>
    </personal_information>
    <login_information>
      <username>3miliano</username>
      <password>****</password>
    </login_information>
  </user>
  <user>
    <personal_information>
      <first_name>MARIANO</first_name>
      <middle_name>TORIBIO</middle_name>
      <last_name>DE ACHAVAL</last_name>
      <ssn>****</ssn>
    </personal_information>
    <login_information>
      <username>machaval</username>
      <password>****</password>
    </login_information>
  </user>
</users>