我有一些 XML,我正在尝试通过集成流程获取这些 XML。以下是我正在执行的步骤:
- 如果消息包含 XML 节点:“filterMe”且类型 =“filterType”,则将其过滤掉 - 如果是这样,我不想处理它。
- 将其从 XML 转换为 Kotlin 类,并向消息添加一些 header 。
我无法找到一种方法来正确过滤 2 个 XML 属性上的消息。非常感谢任何帮助。
这是一些 XML 示例
<?xml version="1.0" encoding="UTF-8"?>
<Response type="filterType">//Filter on this
<event>
<header>
<type>Test</type>
</header>
<body>
<filterMe>filter me out</filterMe> //Filter this too
</body>
</event>
</Response>
集成流程
return IntegrationFlows
.from(inputChannel)
.filter("filterMe"::contains)
.transform { payload: String ->
val jsonMessage = XML.toJSONObject(payload).toString()
最佳答案
考虑精益XPath 。
通过 filter()
中的 Spring Integration,您可以这样做:
.filter(payload ->
XPathUtils.evaluate(payload, "/Response/@type = \"filterType\" and //filterMe",
XPathUtils.BOOLEAN))
注意:类路径中应该有 spring-integration-xml
才能访问该 XPathUtils
。
关于java - Spring IntegrationFlow 过滤器和转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60683722/