指定した XML 属性の削除

DataWeave 2.2 は Mule 4.2 と互換性があり、Mule 4.2 にバンドルされています。 このバージョンの Mule は、拡張サポートが終了する 2023 年 5 月 2 日にその すべてのサポート​が終了しました。

このバージョンの Mule を使用する CloudHub には新しいアプリケーションをデプロイできなくなります。許可されるのはアプリケーションへのインプレース更新のみになります。

標準サポートが適用されている最新バージョンの Mule 4 にアップグレード​することをお勧めします。これにより、最新の修正とセキュリティ機能強化を備えたアプリケーションが実行されます。

XML タグ内から機密データが含まれていることがわかっている特定の属性を削除できます。この DataWeave の例では、渡される要素とその子から特定の XML 属性を削除する関数を DataWeave ヘッダーで定義します。 開始する前に、DataWeave バージョン 2 (​%dw 2.0​) は Mule 4 アプリケーションを対象とすることに注意してください。Mule 3 アプリケーションの場合、Mule 3.9 ドキュメントセットの DataWeave 1.0 (​%dw 1.0​) の例を参照してください。他の Mule バージョンの場合は、目次の Mule Runtime バージョンセレクターを使用できます。

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

  • 各要素を調べる ​mapObject​。

  • XML 要素の属性を参照する ​@​。

  • 存在している XML 属性のみをリストし、子要素がオブジェクトである場合にのみ関数を再帰的にコールする ​if​ および ​else​。

  • 子が ​Object​ 型かどうかをチェックする ​is​。

  • XML 属性のリストから要素を削除する ​-​。

  • 値がない場合に出力 XML に自己終了タグが表示されるようにする出力ディレクティブの ​inlineCloseOn="empty"​。

DataWeave
%dw 2.0
output application/xml inlineCloseOn="empty"
var removeAttribute = (element,attrName) ->
  element mapObject (value, key) -> {
    (key) @(
        (
          if (key.@?)
            (key.@ - attrName)
          else {}
        )
    ) :
    if (value is Object)
      removeAttribute(value, attrName)
    else value
  }
---
removeAttribute(payload, "password")
入力
<users>
  <user username="Julian" password="1234"/>
  <user username="Mariano" password="4321"/>
</users>
出力
<?xml version='1.0' encoding='US-ASCII'?>
<users>
  <user username="Julian"/>
  <user username="Mariano"/>
</users>