Spring IntegrationFlow 过滤和转换
Spring IntegrationFlow Filter and Transform
我有一些 XML 正试图通过集成流程获得。以下是我正在执行的步骤:
- 过滤掉包含 XML 节点的消息:"filterMe" 并且类型 = "filterType" - 如果是这样,我不想处理它。
- 将其从 XML 转换为 Kotlin class,并在消息中添加一些 headers。
我找不到正确过滤 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
。
我有一些 XML 正试图通过集成流程获得。以下是我正在执行的步骤:
- 过滤掉包含 XML 节点的消息:"filterMe" 并且类型 = "filterType" - 如果是这样,我不想处理它。
- 将其从 XML 转换为 Kotlin class,并在消息中添加一些 headers。
我找不到正确过滤 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
。