xpath - Mule 3.9 - 无法使用 Xpath3 NODESET 的 foreach 获取 xml 值
问题描述
我无法使用 Mule 3.9.5 中的以下代码片段检索 XML 值,它适用于较低版本。根据我的用例,我正在寻找仅使用 foreach 而不是拆分器的 XPath 解决方案。
骡流XML
<foreach collection="#[xpath3('/ParentData/Data', payload, 'NODESET')]">
示例 XML
<ParentData>
<Data>
<test1>value1</test1>
<test2>value2</test2>
</Data>
<Data>
<test1>value1</test1>
<test2>value2</test2>
</Data>
</ParentData>
实际输出
[]
预期产出
<Data>
<test1>value1</test1>
<test2>value2</test2>
</Data>
<Data>
<test1>value1</test1>
<test2>value2</test2>
</Data>
有什么建议么 ?
解决方案
使用 xpath3() 返回用 Java 类实现的 XML 的节点列表net.sf.saxon.dom.DOMNodeList
。由于某种原因,它不会打印<logger>
.
我认为使用 DataWeave 脚本会更清晰、更直观、更好地记录和移植到 Mule 的未来版本。
例子:
<dw:transform-message doc:name="Transform Message">
<dw:input-payload mimeType="application/xml" />
<dw:set-variable variableName="data"><![CDATA[
%dw 1.0
%output application/java
---
payload.ParentData.*Data
]]>
</dw:set-variable>
</dw:transform-message>
<foreach collection="#[flowVars.data]" doc:name="For Each">
<logger message="Data=#[payload]" level="INFO" doc:name="Logger"/>
</foreach>
输出:
Data={test1=value1, test2=value2}
Data={test1=value1, test2=value2}
在 Mule 4 中,您可以直接在<foreach>
.
推荐阅读
- c# - 为什么我在 Powershell 和 C# 之间得到不同的结果
- matlab - 在 MatLab 中将汉宁窗应用于我的回波信号
- javascript - 根据页面加载时的下拉值显示文本框
- go - 从 protobuf 中的其他包导入类型定义
- amazon-web-services - 有什么方法可以使用存储在 Redshift 表中的函数名?
- python - 如何在 Python 列表中找到最常见的字符串?
- django - 姜戈。REST 框架。重命名 SerializerMethodField()
- asp.net-core - Azure 函数使用了错误的 DbContext 构造函数
- android - FirebaseMessagingService 仅订阅选定类型的用户登录
- pine-script - 时间戳不适用于内置变量