我正在使用camel将消息路由到Web服务。消息类似于XML,但没有名称空间/前缀。现在的问题是Web服务期望XML,但是每个元素都有适当的名称空间。因此,作为一个例子:将名称空间和前缀添加到xml
<a>
<b>value_b</b>
<c>value_c</c>
</a>
就是即时得到的,而是需要被发送出去应该是这样的
<a xmlns:n1="http://yadda-ns1.com" xmlns:n2="http://yadda-ns2.com">
<ns1:b>value_b</ns1:b>
<ns2:c>value_c</ns2:c>
</a>
,如果它是将刚使用我的所有要素相同的命名空间是什么一个xslt来添加它。但它大多是2或3个不同的命名空间。
现在是否可以在我的骆驼路线中添加命名空间?我有想法使用jaxb从“不完整的”XML到“完整的”(使用XML),这是否会起作用?我正在尝试这个,但还没有成功。
还是有人有不同的想法?我的项目中也有XSD和JAXB注释类,因此这些也可以使用,并且消息与缺少的命名空间不同。
问候
托马斯
尝试使用相同XSD用于输出。然后,接收请求时名称空间已经准备就绪。另一种选择是将请求映射到响应。我总是使用XmlBeans从XSD生成一个Jar。 –
骆驼路由即时通讯使用,你可以认为它是一种旧系统的适配器(通过tcp发送没有命名空间的XML)和一个新系统(通过Web服务SOAP接收正确的XML)旧和新系统不能改变。 所以我必须在我的适配器/骆驼路线中解决这个问题。 编辑(也编辑了与该信息的问题):消息是相同的,除了名称空间 – horus
“*如果它是相同的命名空间在所有元素上,我只是用一个xslt来添加它,但其大多数是2或3不同的名称空间。“为什么你不使用XSLT? (如果你不想使用它,为什么你的问题被标记为'xslt'?) –