【发布时间】:2015-06-11 07:02:06
【问题描述】:
我被要求创建一个 wcf 客户端来访问我无法修改的自定义 java web 服务。我需要使用 webservice 方法,例如:
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope">
<s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<createDocument xmlns="http://www.dummyUrl.com/javaws">
<version>
...
<metadata>
<attribute name="ConfigName">ConfigurationTemplateForModuleX</attribute>
<attribute name="ConfigValue">This is a configuration string</attribute>
</metadata>
...
</version>
</createDocument>
</s:Body>
</s:Envelope>
在属性“ConfigValue”中,我通常需要保存字符串,但我还需要能够将节点内的整个 XML 文档保存为 CDATA,例如:
...
<metadata>
<attribute name="ConfigName">ConfigurationTemplateForModuleX</attribute>
<attribute name="ConfigValue">
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
<title>Config Template for Module X</title>
...
</config>
]]>
</attribute>
</metadata>
...
我创建了一个对我的 Visual Studio 项目的服务引用,并创建了代理类,我可以使用第一个代码部分中描述的 web 服务,但问题是我想要包含在请求被自动编码,因此不再可用,因为我无法更改目标 Web 服务:
<![CDATA[
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
<title>Config Template for Module X</title>
...
</config>
]]>
我需要以某种方式修改 XML-Text 属性的序列化,或者抑制编码。
你有什么想法可以解决这个问题吗?
【问题讨论】:
标签: c# .net web-services wcf cdata