【问题标题】:Dataweave Mulesoft Skip XML tagsDataweave Mulesoft 跳过 XML 标签
【发布时间】:2016-10-22 20:28:48
【问题描述】:

我正在使用 dataweave 将 csv 文件转换为 xml 文件。在某些地方,某个 xml 标记没有价值,我得到一个空标记。

我想要的是,如果没有任何值,那么 xml 中绝对不能出现该标签。

这是一个长映射,所以我不想在 when else 标记中写入整个映射,而只是在 when else 条件中写入该标记的映射。

数据映射

    name: ((payload01.name) when payload01.name != ""
    otherwise {}),

输出: 如果输入中有 name 的值

    <name>Kittu</name>

否则

    <name/> 

我想要的是在其他情况下,根本不应该出现任何标签。

感谢所有帮助。谢谢。

【问题讨论】:

    标签: xml mule datamapper dataweave


    【解决方案1】:

    "name:" 应该在括号内,像这样:

    (name: (payload01.name) when payload01.name != ""
             otherwise {})
    

    【讨论】:

      【解决方案2】:

      在输出声明中使用 skipNullOn="everywhere" 这样您就不需要为所有元素声明它。

      %output application/xml skipNullOn="everywhere"
      

      参考:https://docs.mulesoft.com/mule-user-guide/v/3.7/dataweave-reference-documentation#output-directive

      如果你需要空标签出现,那么我们将不得不使用when,否则如下所示:

      name: payload01.name when ((payload01.name != null) and (payload01.name != "" )) otherwise "",
      

      另一种方法是指定“默认”值,这是最简单的:

      name: payload01.name default "",
      

      【讨论】:

        【解决方案3】:

        同意 Victor P,“姓名:”应该在括号内。但是,要获得相同的结果,您可以使用以下 sn-p。

        (name: payload01.name) when payload01.name != ""
        

        虽然没有否则它会构造名字,除非payload01.name为空。

        【讨论】:

          【解决方案4】:

          在输出声明中使用 skipNullOn="attributes" 这样您就不需要为所有元素声明它。

          %输出应用程序/xml skipNullOn="attributes"

          【讨论】:

            【解决方案5】:

            对于在 mule 中添加空选项卡,这应该更合适。 名称:payload.name 默认{}

            这将产生 如果名称没有值。

            【讨论】:

              【解决方案6】:

              skipNullOn 检查元素或属性是否存在。 例如如果您的输入中不存在名称元素,则它不会在输出中显示它。

              要检查 value 是否为空,您必须使用如下条件: (名称:payload01.name)当payload01.name != ""

              【讨论】:

                【解决方案7】:

                如果您使用 skipNullOn="everywhere" 标记将出现在输出字段中,即使它没有值。所以在这种情况下它不起作用。 尝试编写单独的函数来检查和跳过整个标签的空值。

                【讨论】:

                  【解决方案8】:

                  您可以进行如下检查以发送 xml 标签:

                  *(Contact: {
                                  mobNo: payload.moNo,
                                  countryCode: payload.countryCode
                              }
                  ) when payload != null and paylaod.mobNo != null*
                  

                  只有当有效载荷中存在有效的 mobNo 时,整个 Cntact 标记才会进入请求。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多