java - Spring IntegrationFlow 过滤器和转换

标签 java spring spring-boot kotlin spring-integration

我有一些 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/

相关文章:

java - Tomcat 404 错误与 Spring Hibernate JSF 编译

java - Spring Boot + Apache 反向代理 : This combination of host and port requires TLS

java - org.thymeleaf.exceptions.TemplateInputException : Error resolving fragment: template or fragment could not be resolved

java - 任何用于在 Swing 应用程序中嵌入电影的简单(和最新的)Java 框架?

java - Spring Integration with JPA 返回错误::查询有参数,但未提供参数源

java - 这是函数、变量还是其他东西

java - 尝试创建存储库实例时出现 org.springframework.data.mapping.MappingException

java - 最小化 Java 堆栈跟踪的内容

java - Spring ,JPA, hibernate ,Tomcat : Unable to find persistence unit when loading Spring application context

java - Spring junit 测试模板可能不存在