2

如何从 SOAPBody 获取原始 xml?也许一些实用函数只会给我 Body xml(不是正文)。我不想重新发明代码来遍历每个节点/子节点 - 它可能已经存在于某些实用程序中?

骆驼流有一个数据转换器“soapjxb”,但我不需要映射/解组到 java 对象。

为什么我需要那个?:清理操作

其中一个客户端应用程序(我正在尝试使用 ApacheCamel 集成)正在向我的 mq 发送一条 xml 消息,该消息嵌入在一个肥皂信封中(“不必要的噪音”),我无法更改客户端应用程序. 我必须丢弃肥皂信封并在肥皂体内获取 xml 并将其发布到另一个 jmsqueue。

PS:我知道如何从 SOAPMessage 获取原始 xml,如此处所述:Getting Raw XML From SOAPMessage in Java

4

2 回答 2

1

如果您有 XML 中的 SOAPEnvelope,那么只需使用xpath来隔离您想要的 XML 并将其发送出去......

.setBody(xpath("//SOAPBody"))...
于 2012-11-15T16:26:36.843 回答
-1

使用 xslt 删除命名空间并将其视为普通 xml。

<xsl:stylesheet 版本="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <xsl:output method="xml" indent="yes" omit-xml-declaration="yes" /><xsl:template match=" "><xsl:element name="{local-name()}"><xsl:apply-templates select ="@ | node()" /></xsl:element></xsl:template><xsl:template match="@*"> <xsl:attribute name="{local-name()}"> <xsl:value-of select=" 。” /></xsl:attribute></xsl:template><xsl:template match="text() | comment() | processing-instruction()"> <xsl:

将 > 替换为大于,将 < 替换为小于 ans 保存为 xslt 并用于转换以删除肥皂名称空间。

于 2018-12-03T13:28:25.620 回答