DataWeaver Mule 文档第 1.1.2 节和第 3.4 节示例不起作用?
DataWeaver Mule Document section 1.1.2 and 3.4 examples not working?
浏览 Dataweaver 文档
Link: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
的错误
开始学习和解决所提供的示例。谢谢。
文档中的示例有错别字,name
之前缺少一个 *
(应该修复):
%dw 1.0
%input payload application/xml
%output application/xml
---
users: payload.users.*name[?($ == "Mariano")]
问题是 XML 没有内置的列表表示,因此列表由多次出现的标记表示。表达式 *name
returns 出现 name
的列表,表达式 [?($ == "Mariano")]
它就像一个过滤器(我更喜欢过滤器,因为它更容易理解)。
出现神秘的错误消息是因为运算符适用于列表,但 payload.users.name
returns name
的首次出现。 (这就是为什么它说不能将字符串强制转换为数组)。
浏览 Dataweaver 文档 Link: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
开始学习和解决所提供的示例。谢谢。
文档中的示例有错别字,name
之前缺少一个 *
(应该修复):
%dw 1.0
%input payload application/xml
%output application/xml
---
users: payload.users.*name[?($ == "Mariano")]
问题是 XML 没有内置的列表表示,因此列表由多次出现的标记表示。表达式 *name
returns 出现 name
的列表,表达式 [?($ == "Mariano")]
它就像一个过滤器(我更喜欢过滤器,因为它更容易理解)。
出现神秘的错误消息是因为运算符适用于列表,但 payload.users.name
returns name
的首次出现。 (这就是为什么它说不能将字符串强制转换为数组)。