繁体   English   中英

在SOAP响应中包含XML

[英]Include XML in SOAP response

在我的WSDL中,我的响应是这样设置的:

<message name='getPartsResponse'>
  <part name='Result' type='xsd:string'/>
</message>

我遇到的问题是我在响应中发送的是XML,而不是字符串。 结果,我得到了带有HTML实体而不是<和> XML的响应的XML(不是XML SOAP Response(可以))。

这是我得到的:

<SOAP-ENV:Body>
<ns1:getPartsResponse>
<Result xsi:type="xsd:string">
&lt ;catalog&gt ;
&lt ;result id="1"&gt ;
&lt ;part&gt ;AAAAAAAAAAA&lt ;/part&gt ;
&lt ;qty>0000000000&lt ;/qty&gt ;
&lt ;mfg&gt ;XXXXXXXXXXXXX&lt ;/mfg&gt ;
&lt ;/result&gt ;
&lt ;result id="2"&gt ;
&lt ;part&gt ;BBBBBBBBBBB&lt ;/part&gt ;
&lt ;qty>11111111111&lt ;/qty&gt ;
&lt ;mfg&gt ;ZZZZZZZZZZZZZ&lt ;/mfg&gt ;
&lt ;/result&gt ;
&lt ;/catalog&gt ;
</Result>
</ns1:getPartsResponse>
</SOAP-ENV:Body>

这就是我想要得到的:

<SOAP-ENV:Body>
<ns1:getPartsResponse>
<Result xsi:type="xsd:string">
<catalog>
<result id="1">
<part>AAAAAAAAAAA</part>
<qty>0000000000</qty>
<mfg>XXXXXXXXXXXXX</mfg>
</result>
<result id="2">
<part>BBBBBBBBBBB</part>
<qty>11111111111</qty>
<mfg>ZZZZZZZZZZZZZ</mfg>
</result>
</catalog>
</Result>
</ns1:getPartsResponse>
</SOAP-ENV:Body>

我想念什么?

谢谢。

以下在Perl中为我工作

use XML::Entities;

$b = XML::Entities::decode('all', $response);
print $b;

$response应该是webservice调用返回的XML。

除非该服务的模式准确描述了您要发送的XML,否则必须使用XML转义符使XML作为字符串通过管道。 &lt;tag&gt; 代替<tag> ,等等,等等,等等。

或者,您需要更改架构以使用XML架构的any粒子。

如果这对您来说是新手,那么我建议下载Apache CXF的发行版。 查看“ wsdl-first”示例,并了解如何集成该模式。

为什么要指定消息部分的类型为xsd:string 它应该已指定为xsd:any或在架构中定义的特定类型。 然后,您可以内联包含它。

您正在准确地看到您要求计算机执行的操作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM