gpt4 book ai didi

wcf - 无法使用 WCF web 服务的 XMLSerializer 结果反序列化

转载 作者:行者123 更新时间:2023-12-04 17:39:42 25 4
gpt4 key购买 nike

这是尝试从紧凑框架中获取 http 服务的代码。

    List<Table> tables;
using (Stream r = response.GetResponseStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(Table),"http://schemas.datacontract.org/2004/07/");
tables=(List<Table>) serializer.Deserialize(r);
}

response.Close();

它失败并显示 {"XML 文档中存在错误 (1, 2)。"}
{"<ArrayOfTable xmlns='http://schemas.datacontract.org/2004/07/WpfApplication1.Data.Model'> was not expected."}

表命名空间是一样的...
我不知道那里有什么问题...

更新

问题是我的 typeof(Table) 不是 typeof( List<Table> ) 部分工作..没有错误,但创建的表值为空!

最佳答案

XmlSerializer 构造函数上的第二个参数适用于序列化和反序列化。因此,第二个参数(命名空间)应该与接收到的参数相同。所以你最终会得到:

XmlSerializer serializer = new XmlSerializer(typeof(Table),"http://schemas.datacontract.org/2004/07/WpfApplication1.Data.Model")

请注意命名空间字符串末尾的“WpfApplication1.Data.Model”。

摆脱命名空间的一种方法。是在您的模型类(表)上指定它不应使用命名空间:
[DataContract(Namespace = "")]
public class Table { ... }

这样你就不需要为反序列化指定命名空间。

希望能帮助到你!

关于wcf - 无法使用 WCF web 服务的 XMLSerializer 结果反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7178687/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com