2016-09-29 20 views
0

我正在使用彈簧集成功能從傳出通道中獲取消息。每條消息的格式如下:如何在春季解析XML消息負載?

<message> 
    <properties> 
    <property> 
     <key>a</key> 
     <value>b</value> 
    </property> 
    <property> 
     <key>c</key> 
     <value>d</value> 
    </property> 
    </properties> 
</message> 

對於每個消息,我想爲鍵a解析值b並寫入磁盤。我如何在春季整合中做到這一點?

+0

【JAVA?:如何讀寫XML文件]的可能的複製(HTTP:// stackoverflow.com/questions/7373567/java-how-to-read-and-write-xml-files) – sidgate

+0

謝謝,我將如何做到這一點在春季整合? – user1040535

+0

這個怎麼樣? http://stackoverflow.com/questions/25556624/xml-deserialization-to-pojo-using-jackson-xmlmapper – Tin

回答

1

XpathSplitter對輸入文件執行一些xpath併產生匹配部件的子文件。

根據提供的xpath,只有正規的XPathTransformer來提取輸入文件的一部分。

要存儲到磁盤,您應該使用FileWritingMessageHandler

這真的是不清楚爲什麼參考手冊是不夠的,找到答案......

+0

我最終使用XPathTransformer XPathExpression。 – user1040535

0

您可以使用來自Spring Integration的UnmarshallingTransformer,請參閱官方documentation

一種UnmarshallingTransformer允許XML源到使用Spring OXM的Unmarshaller的實現中可以解組 。 Spring的 對象/ XML映射支持提供了多種支持 使用JAXB,Castor和JiBX在 之間編組和解編的實現。解組器需要Source的一個實例。如果郵件有效負載不是源的實例,則嘗試轉換 。目前支持String,File和org.w3c.dom.Document有效載荷 。自定義轉換爲源代碼也支持 注入SourceFactory的實現。