Mule Custom Transformer を使用して XML を JSON に変換する
-
21-12-2019 - |
質問
こんにちは、私は Mule Studio を使用しています。Google Gson ライブラリを使用して XML を Json に変換するカスタム トランスフォーマを作成したいと考えています。したがって、この場合、Java Transformer コンポーネントを追加する必要があり、そのためのカスタム コードを作成する必要があります。しかし、私が直面している問題は、入力パラメータをオブジェクトとして受け入れるメソッドをオーバーライドしていることです。それが私が考える唯一の方法であるか、入力パラメータをXML文字列として受け入れる他の方法です。機能させるためにコードを共有してください。
public class Transfomer extends AbstractTransformer
{
protected Object doTransform(Object src, String enc) throws TransformerException {
// TODO Auto-generated method stub
return null;
}
}
解決
既存の変圧器を見てみましょう。 https://github.com/mulesoft/mule/blob/mule-3.x/modules/xml/src/main/java/org/mule/module/xml/transformer/XmlPrettyPrinter.java
- 次のように、受け入れられたソース型がコンストラクター内でどのように登録されるかを確認してください。
registerSourceType(DataTypeFactory.create(org.dom4j.Document.class));
- その方法を参照してください。
doTransform
ジェネリックメソッドObject src
変換されます。
他のヒント
Mule パレットから Mule フローへの XML から JSON へのトランスフォーマを使用できます。
<json:xml-to-json-transformer doc:name="XML to JSON"/>
または
DataWeave 変換を使用します。
<dw:transform-message doc:name="Transform Message">
<dw:set-payload><![CDATA[%dw 1.0
%output application/json
---
payload]]></dw:set-payload>
</dw:transform-message>
Dataweave 出力を application/json として設定すると、これが自動的に行われます。ただし、JSON を XML に変換する場合は、JSON がルート要素とメンバー要素を含む XML 形式に変換できることを確認する必要がある場合があります。