Web services javawebservice返回&;lt&;chars的燃气轮机<&燃气轮机;

Web services javawebservice返回&;lt&;chars的燃气轮机<&燃气轮机;,web-services,soap,wsdl,Web Services,Soap,Wsdl,我编写了一个soap/web服务,它返回一个字符串,例如: "<GeocodeResponse><City>Denver</City><State>CO</State></GeocodeResponse>" “DenverCO” 我已为此数据定义了架构: <xs:element name="GeocodeResponse"> <xs:complexType> <xs:sequence

我编写了一个soap/web服务,它返回一个字符串,例如:

"<GeocodeResponse><City>Denver</City><State>CO</State></GeocodeResponse>"
“DenverCO”
我已为此数据定义了架构:

<xs:element name="GeocodeResponse">
<xs:complexType>
    <xs:sequence>
        <xs:element name="City"/>
        <xs:element name="State"/>
    </xs:sequence>
</xs:complexType>
</xs:element>

这将作为web服务方法的响应返回

<xs:complexType name="standardizeResponse">
  <xs:sequence>
     <GeocodeResponse/>
  </xs:sequence>
</xs:complexType>

在soap信封中,Xml被转义,因此我得到的不是我想要的Xml,而是类似于:
GeocodeResponse
城市
丹佛
/City
/State
/GeocodeResponse


我认为,通过使用模式来定义字符串中返回的内容,可以避免字符串被转义。

当您向XML处理器提供原始字符串时,理解为字符串的含义要传达给接收者,以便可以重构实际字符串。这意味着处理器将转义任何保留的XML字符(<>&%'),以便它们不会被误解为文档的一部分,而不是文档中的消息

如果使用xjc生成反映模式的对象(或者更好的是,使用wsimport从WSDL生成对象和服务存根),则可以使用数据填充生成的对象,然后使用封送器构造响应消息,然后将其呈现为正确标记的XML。Marshaller文档实际上提供了将封送处理为各种形式()的良好用法示例

我正在进行假设,以弥补上下文的不足,因此,如果这个答案似乎不适用,请按此回答,并包括实际的服务端点代码,我(或其他响应者)可以重新访问


祝你好运

你可以试试这个,它为我解决了问题

org.apache.axiom.om.OMElement tmpElement=org.apache.axiom.om.util.AXIOMUtil.stringToOM(Element.getText());
当您将tmpElement添加到SOAP信封中时,您将收到适当的表示形式“