【问题标题】:How do I parse XML message payload in spring?如何在 spring 中解析 XML 消息有效负载?
【发布时间】:2017-02-08 06:38:36
【问题描述】:

我正在使用 spring 集成从传出通道中获取消息。每条消息的格式如下:

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

对于每条消息,我想解析键 a 的值 b 并写入磁盘。我如何在 Spring 集成中做到这一点?

【问题讨论】:

标签: java spring spring-integration


【解决方案1】:

你可以使用 Spring Integration 中的 UnmarshallingTransformer,参考这个官方documentation。

UnmarshallingTransformer 允许对 XML 源 进行解组 使用 Spring OXM Unmarshaller 的实现。春天的 对象/XML 映射支持提供了几种支持 使用 JAXB、Castor 和 JiBX 进行编组和解组 其他。解组器需要一个 Source 实例。如果 消息负载不是 Source 的实例,转换将是 尝试过。目前是 String、File 和 org.w3c.dom.Document 有效载荷 支持。自定义转换为 Source 也支持 注入 SourceFactory 的实现。

【讨论】:

    【解决方案2】:

    有XpathSplitter 对传入的文档执行一些xpath 并为匹配的部分生成子文档。

    根据提供的xpath,只有常规的XPathTransformer来提取传入文档的部分。

    要存储到磁盘,您应该使用FileWritingMessageHandler。

    真的不清楚为什么参考手册不足以找到答案......

    【讨论】:

    • 我最终使用了带有 XPathExpression 的 XPathTransformer。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多