无法使用c#代理类读取webservice响应中存在的xml数据
我需要在C#网站应用程序中使用web服务。我使用wsdl命令生成了代理类,并且能够使用它调用webservice并获得结果 问题是,我在响应xml中有两个字段,它们在cdata标记中提供数据。这两个字段的值作为空字符串返回。我尝试将XMLText属性添加到代理中的字段定义中,如下所示无法使用c#代理类读取webservice响应中存在的xml数据,c#,web-services,xml-deserialization,proxy-classes,C#,Web Services,Xml Deserialization,Proxy Classes,我需要在C#网站应用程序中使用web服务。我使用wsdl命令生成了代理类,并且能够使用它调用webservice并获得结果 问题是,我在响应xml中有两个字段,它们在cdata标记中提供数据。这两个字段的值作为空字符串返回。我尝试将XMLText属性添加到代理中的字段定义中,如下所示 [XmlText] public string Title { get { return this.TitleField; }
[XmlText]
public string Title {
get {
return this.TitleField;
}
set {
this.TitleField = value;
}
}
[XmlText]
public string Description {
get {
return this.descriptionField;
}
set {
this.descriptionField = value;
}
}
但是,当完成上述代码更改时,我得到以下错误:
异常详细信息:System.InvalidOperationException:无法序列化“WService.xxxxxxxxx”类型的对象,因为它具有多个XmlText属性。考虑使用XMLTExtError的字符串数组来混合复杂类型的序列化。
以下是这些值在响应中的显示方式:
这两个元素的数据类型在XSD中都指定为字符串。请告诉我如何解决此问题。来自
用法:
MyClass mc = new MyClass();
mc.MyString = "<test>Hello World</test>";
XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
StringWriter writer = new StringWriter();
serializer.Serialize(writer, mc);
Console.WriteLine(writer.ToString());
MyClass mc=newmyclass();
mc.MyString=“你好,世界”;
XmlSerializer serializer=新的XmlSerializer(typeof(MyClass));
StringWriter编写器=新的StringWriter();
serializer.Serialize(writer,mc);
Console.WriteLine(writer.ToString());
输出:
<?xml version="1.0" encoding="utf-16"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyString><![CDATA[<test>Hello World</test>]]></MyString>
</MyClass>
你好,世界]]>
总结一下问题:我想阅读包含CDATA的XML元素的值。如何修改C#proxy类来实现这一点。
<?xml version="1.0" encoding="utf-16"?>
<MyClass xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MyString><![CDATA[<test>Hello World</test>]]></MyString>
</MyClass>