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 的首次出现。 (这就是为什么它说不能将字符串强制转换为数组)。