如何在 dataweave 中访问 XML 中的 JSON?
How to access a JSON inside an XML in dataweave?
我有一个 xml 文件,其中包含订单数据和订单行项目。此外,XML 内的 JSON 字符串中存储了某些行项目的信息,我正在努力正确访问这些信息。
来源如下所示:
<orders>
<order order-no="00006640">
<currency>EUR</currency>
<product-lineitems>
<product-lineitem>
<position>1</position>
<net-price>22.37</net-price>
</product-lineitem>
<product-lineitem>
<position>2</position>
<net-price>10.99</net-price>
</product-lineitem>
</product-lineitems>
<custom-attribute attribute-id="return">
<value>{"status":"RETURNED","position":"2","quantity":"1.000"}</value>
</custom-attribute>
</order>
</orders>
目标应如下所示(将 数量 从 JSON 移至相应的订单项):
<orders>
<order order-no="00006640">
<currency>EUR</currency>
<product-lineitems>
<product-lineitem>
<position>1</position>
<net-price>22.37</net-price>
</product-lineitem>
<product-lineitem>
<position>2</position>
<net-price>10.99</net-price>
<quantity>1</quantity>
</product-lineitem>
</product-lineitems>
</order>
</orders>
有没有办法在一次数据编织转换中解决这个问题?
可能是这样的..
%dw 2.0
output application/xml
var extractedJson = read(payload.orders.order."custom-attribute".value,"application/json")
var updProdLineItems = "product-lineitems": payload.orders.order.."product-lineitems" map {
"product-lineitem": $.*"product-lineitem" map{
a: $ ++ (if($.position == extractedJson.position) ({"quantity": extractedJson.quantity}) else {})
}.a
}
---
{
orders:
payload.orders mapObject {
order @("order-no" : $.@"order-no"): $ - "custom-attribute" - "product-lineitems" ++ updProdLineItems
}
}
我有一个 xml 文件,其中包含订单数据和订单行项目。此外,XML 内的 JSON 字符串中存储了某些行项目的信息,我正在努力正确访问这些信息。
来源如下所示:
<orders>
<order order-no="00006640">
<currency>EUR</currency>
<product-lineitems>
<product-lineitem>
<position>1</position>
<net-price>22.37</net-price>
</product-lineitem>
<product-lineitem>
<position>2</position>
<net-price>10.99</net-price>
</product-lineitem>
</product-lineitems>
<custom-attribute attribute-id="return">
<value>{"status":"RETURNED","position":"2","quantity":"1.000"}</value>
</custom-attribute>
</order>
</orders>
目标应如下所示(将 数量 从 JSON 移至相应的订单项):
<orders>
<order order-no="00006640">
<currency>EUR</currency>
<product-lineitems>
<product-lineitem>
<position>1</position>
<net-price>22.37</net-price>
</product-lineitem>
<product-lineitem>
<position>2</position>
<net-price>10.99</net-price>
<quantity>1</quantity>
</product-lineitem>
</product-lineitems>
</order>
</orders>
有没有办法在一次数据编织转换中解决这个问题?
可能是这样的..
%dw 2.0
output application/xml
var extractedJson = read(payload.orders.order."custom-attribute".value,"application/json")
var updProdLineItems = "product-lineitems": payload.orders.order.."product-lineitems" map {
"product-lineitem": $.*"product-lineitem" map{
a: $ ++ (if($.position == extractedJson.position) ({"quantity": extractedJson.quantity}) else {})
}.a
}
---
{
orders:
payload.orders mapObject {
order @("order-no" : $.@"order-no"): $ - "custom-attribute" - "product-lineitems" ++ updProdLineItems
}
}