浏览Dataweaver文档 链接:https://developer.mulesoft.com/docs/dataweave#_attribute_selector_expressions
第3.4节主要礼物 试试这个例子如下。
Input:
<users>
<name>Mariano</name>
<name>Luis</name>
<name>Mariano</name>
</users>
变换:
%dw 1.0
%input payload application/xml
%output application/xml
---
users: payload.users.name[?($ == "Mariano")]
当我尝试在我的DataWeaver中提供此表达式时,它会发出类似cannot coerce a:string to a: array:(7,92)
的警告。
给出了与文档中提到的相同的方式。有人可以请一点建议。
预期回应:
<?xml version="1.0" encoding="UTF-8"?>
<users>
<name>Mariano</name>
<name>Mariano</name>
</users>
同样在文档1.1.2中,字符串操作示例对我不起作用
%dw 1.0
%input payload application/xml
%output application/json
%function words(name) name splitBy " "
---
contacts: payload.users.*user map using (parts = words($.name)){
firstName: parts[0],
(secondName: parts[1]) when (sizeOf parts) > 2,
lastName: parts[-1],
email: "$((lower $.name) replace " " with ".")@acme.com.ar",
address: $.street
}
显示multiple marker at this line missing '}' no viable alternative at input email
开始学习并制定提供的示例。感谢。
答案 0 :(得分:1)
文档中的示例有一个拼写错误,*
之前缺少name
(应该修复):
%dw 1.0
%input payload application/xml
%output application/xml
---
users: payload.users.*name[?($ == "Mariano")]
问题是XML没有内置列表表示,因此列表由标签的多个出现表示。表达式*name
返回一个出现name
的列表,表达式[?($ == "Mariano")]
就像一个过滤器(我更喜欢过滤器,因为它更容易理解)。
出现神秘错误消息,因为运算符应用于列表,但payload.users.name
返回name
的第一个外观。 (这就是为什么它说不能强制字符串到数组)。