框架正在按照您所说的去做。您的方法返回
String,表示生成的WSDL应该具有类型为的响应消息
<xsd:string>。众所周知,XML字符串必须将某些字符编码为字符实体引用(即“
<”变为“
<”,因此XML解析器将其视为字符串,而不是您期望的XML元素的开头)。如果要返回XML文档,则必须在WSDL
<types>部分中定义XML结构,并将响应消息部分设置为适当的元素。
换句话说,您尝试不使用SOAP / WSDL提供的强类型系统(即XML模式)来发送“类型化”数据;这通常被认为是不好的设计(请参阅
松散类型的Web服务与强类型的Web服务 )。
最终的解决方案是通过适当的XML
Schema定义响应文档。如果没有设置模式(如服务设计那样),则使用该
<xsd:any>类型作为消息响应类型,尽管这种方法有其陷阱。此外,这样的重新设计意味着模式优先(自上而下)的开发模型,并且从注释流中看来,您当前正在实践代码优先(自下而上)的方法。也许您的工具提供了实现相同效果的机制,例如“通用XML文档”返回类型或注释。



