xml - 如何在 Mulesoft 中遍历 xml 文件
问题描述
在我的输入有效负载中,我将获得值 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>
解决方案
假设您要使用 Mule 4.x 运行时,因此使用 DataWeave 2.0
您可以对传入的输入有效负载应用过滤器并检查匹配的条件。
例如,假设您有包含用户名、密码和接口名称的变量(因为我正在使用游乐场,我想向您展示手头问题的快速解决方案)。假设您的有效负载是 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"
}
}
推荐阅读
- mongodb - 基于查找逻辑的MongoDB预存储集字段
- android - Android 应用程序不断抛出 java NullPointerException 并崩溃
- google-maps - Flutter Google Maps - 为什么我在 Google Maps 中看不到我的标记?
- kubernetes - 在受限集群中创建 kubernetes 仪表板,在该集群中您被禁止使用角色、角色绑定等,并且在命名空间之外无权访问
- nginx - proxy_pass 的 Nginx $args 操作
- python - 将输入矩阵与用户分离
- python - 提取括号之间的文本并为每一位文本创建行
- polygon - 为什么匀称的“差异”和“交叉”返回意外结果?
- java - Amazon Corretto 8 容器感知
- wso2 - 如何删除 WSO2 IS 中特定 ServiceProvider 的特定用户的会话?