2

调用 java SOAP 服务时,我需要强制 WCF 使用 XML 命名空间前缀

我传出的肥皂消息目前如下所示:

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<getStuff xmlns="http://XXXXXX.com/">
<Id>84</Id>
</getStuff>
</s:Body>

我需要它利用 cxf 服务的命名空间前缀来正确解析消息。

<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<nsXX:getStuff xmlns:nsXX="http://XXXXXX.com/">
<nsXX:Id>84</nsXX:Id>
</nsXX:getStuff>
</s:Body>
4

1 回答 1

0

在我继续讨论一个解决方案之前,请注意这两个 XML 是不同的:在第一个中,元素<Id>位于http://XXXXXX.com/名称空间中,而在第二个中,元素位于空名称空间中。这真的是你想要的吗?

如果是这样,您将需要使用自定义编码器才能在编写消息时更改 WCF 使用的前缀。一种简单的实现是包装现有的编码器并将大多数调用委托给原始编码器。在编写传出消息时,您首先将其委托给原始编码器,将其写入本地缓冲区。然后,您可以根据需要更改 XML,然后将该消息返回给调用者。

http://blogs.msdn.com/b/carlosfigueira/archive/2010/06/13/changed-prefixes-in-xml-responses.aspx上的帖子显示了此场景的一种实现。

于 2012-12-20T04:00:21.613 回答