Spring IntegrationFlow 过滤和转换

Spring IntegrationFlow Filter and Transform

我有一些 XML 正试图通过集成流程获得。以下是我正在执行的步骤:

我找不到正确过滤 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

通过 Spring 集成在 filter() 中,您可以这样做:

.filter(payload -> 
                XPathUtils.evaluate(payload, "/Response/@type = \"filterType\" and //filterMe", 
                                    XPathUtils.BOOLEAN))

注意:您应该在类路径中包含 spring-integration-xml 才能访问 XPathUtils