我的SOAP请求中的XML小节正在逃脱XML字符



我有一个我想与之交互的肥皂Web接口。肥皂请求的一部分应该如下:

<postCommand>
    <ServiceData>Data</ServiceData>
</postCommand>

我从WSDL文件构建了Web参考,并获得了一个后命中率,让我将XML数据作为字符串输入。然后,我尝试了实际的帖子请求,并在提琴手中看到我的输出更像是这样:

<postCommand>
&lt;ServiceData&gt;Data &lt;/ServiceData&gt;&#xD;
<postCommand>

显然,这里有某种逃脱的事情,但是我不确定原因。

这是WSDL的相关部分:

      <xs:element name="postCommand">
            <xs:complexType>
                <xs:sequence>
                    <xs:element name="dataXml" nillable="true" type="xs:string" />
                </xs:sequence>
            </xs:complexType>
        </xs:element>

相关的代码:

                            var postXml = new SoapWebService.postCommand
                        {
                         //At this point it's all properly formatted XML as a string
                            dataXml = soapEnvContent 
                        };
var resp = apiClient.postCommand(postXml)

我以前从未遇到过这个逃脱的问题,所以我不确定如何进行。有没有办法避免XML逃脱?

我建议您使用CDATA。实际上,这是一个错误的答案。因为,CDATA不是XML逻辑结构的一部分。您可以在HTML或DOM结构中使用CDATA,但事实上,CDATA不会解码任何内容。它只是浏览器或其他第三部分应用程序的标志。所以,

<postCommand>
&lt;ServiceData&gt;Data &lt;/ServiceData&gt;&#xD;
<postCommand>

此格式是正确编码SOAP的。您应该在响应中对其进行解码。您可以将HttpUtility.HtmlDecode用于此目的。

相关内容

  • 没有找到相关文章

最新更新