【问题标题】:How to traverse xml file in Mulesoft如何在 Mulesoft 中遍历 xml 文件
【发布时间】:2021-07-09 03:09:42
【问题描述】:

在我的输入负载中,我将获得值 Username=erepair、Password=erepairtest 和 InterfaceName=ABC。 我需要检查所有这些值是否存在于 scr/main/resource 下的 partner.xml 文件中的特定合作伙伴节点下。

基本上需要检查接口“ABC”是否被授权进行erepair/erepairtest

    <PartnerMain>
        <Partner>
            <userName>erepair</userName>
            <userPassword>erepairtest</userPassword>
            <AuthorizedInterface>
                <name>ABC</name>
            </AuthorizedInterface>
            <AuthorizedInterface>
                <name>EFG</name>
            </AuthorizedInterface>
        </Partner>
        <Partner>
            <userName>pair</userName>
            <userPassword>pairtest</userPassword>
            <AuthorizedInterface>
                <name>ABC</name>
            </AuthorizedInterface>
            <AuthorizedInterface>
                <name>EFG</name>
            </AuthorizedInterface>
        </Partner>
    </PartnerMain>  

【问题讨论】:

    标签: xml dom xml-parsing mule mulesoft


    【解决方案1】:

    假设您要使用 Mule 4.x 运行时和 DataWeave 2.0

    您可以将filter 应用于传入的输入负载并检查匹配的条件。

    例如假设你有包含用户名、密码和接口名的变量(因为我正在使用游乐场,我想向你展示手头问题的快速解决方案)。假设您的有效负载是 partner.xml 文件(因为您将在 Mule 流中实现它,您将使用 file:read 操作并在 Dataweave 转换消息组件中引用它。)。

    根据负载检查字段的脚本如下所示:

    脚本

    %dw 2.0
    output application/json
    var userName="erepair"
    var password="erepairtest"
    var interfaceName="ABC"
    ---
    (payload.PartnerMain.*Partner filter (($.userName == userName) and ($.userPassword == password) and ($.AuthorizedInterface.*name contains interfaceName)))[0]
    

    输入

    <PartnerMain>
            <Partner>
                <userName>erepair</userName>
                <userPassword>erepairtest</userPassword>
                <AuthorizedInterface>
                    <name>ABC</name>
                </AuthorizedInterface>
                <AuthorizedInterface>
                    <name>EFG</name>
                </AuthorizedInterface>
            </Partner>
            <Partner>
                <userName>pair</userName>
                <userPassword>pairtest</userPassword>
                <AuthorizedInterface>
                    <name>ABC</name>
                </AuthorizedInterface>
                <AuthorizedInterface>
                    <name>EFG</name>
                </AuthorizedInterface>
            </Partner>
        </PartnerMain>  
    

    输出

    {
      "userName": "erepair",
      "userPassword": "erepairtest",
      "AuthorizedInterface": {
        "name": "ABC"
      },
      "AuthorizedInterface": {
        "name": "EFG"
      }
    }
    

    【讨论】:

    • 当然..请接受答案,以便其他人将来可以使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2014-01-09
    • 1970-01-01
    • 2020-04-09
    • 1970-01-01
    • 2013-09-01
    相关资源
    最近更新 更多