봄 IntegrationFlow 필터 및 변환

aoakeson :

나는 내가 통합 흐름을 통과하려고 몇 가지 XML이있다. 여기에 내가 뭘하는 단계는 다음과 같습니다

  • 그렇다면, 내가 그것을 처리 할 해달라고 - "filterMe"과 유형 = "filterType"을 가지고는 XML 노드를 포함하는 경우 메시지 필터링합니다.
  • 코 틀린 클래스에 XML에서 변환하고, 메시지에 어떤 헤더를 추가합니다.

내가 제대로이 개 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()다음과 같이 할 수 있습니다

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

참고 :이 있어야 spring-integration-xml그에 액세스하려면 클래스 경로에 XPathUtils.

추천

출처http://43.154.161.224:23101/article/api/json?id=286045&siteId=1