将具有名称空间的XML反序列化为C#对象时出错
我有一个XML文件,它的开头如下:-将具有名称空间的XML反序列化为C#对象时出错,c#,C#,我有一个XML文件,它的开头如下:- <?xml version="1.0" encoding="UTF-8"?> <Deal xmlns="http://schemas.datacontract.org/2004/07/DealioCapLinkLib.Dealio.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"> <AccountingDate>2019-09-30</Ac
<?xml version="1.0" encoding="UTF-8"?>
<Deal xmlns="http://schemas.datacontract.org/2004/07/DealioCapLinkLib.Dealio.Models" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<AccountingDate>2019-09-30</AccountingDate>
错误消息是“XML文档(2,2)中有错误。”
内部异常消息是“不应出现。”
Deal是WCF代理。因此我可能无法添加任何属性。有人能建议在这里做什么吗?作为WCF代理并不排除添加属性;特别是,它通常是一个
部分类
,这意味着您可以拥有自己的单独的文件,其中包括:
命名空间服务
{
[XmlRoot(“交易”,命名空间=”http://schemas.datacontract.org/2004/07/DealioCapLinkLib.Dealio.Models")]
部分类处理{}
}
但最终:如果类型不适合XML:停止对抗它-创建一个新的单独类型,该类型适合XML并与
XmlSerializer
配合良好,然后在您自己的代码中映射这两种类型。作为WCF代理并不排除添加属性;特别是,它通常是一个部分类
,这意味着您可以拥有自己的单独的文件,其中包括:
命名空间服务
{
[XmlRoot(“交易”,命名空间=”http://schemas.datacontract.org/2004/07/DealioCapLinkLib.Dealio.Models")]
部分类处理{}
}
但最终:如果类型不适合XML:停止对抗-创建一个新的单独类型,该类型适合XML并与
XmlSerializer
配合良好,然后在您自己的代码中映射这两种类型。尝试将XmlRootAttribute添加到序列化程序var XmlSerializer=new XmlSerializer(typeof(Service.Deal),new XmlRootAttribute(“Deal”);
尝试将XmlRootAttribute添加到序列化程序var xmlSerializer=new xmlSerializer(typeof(Service.Deal),new XmlRootAttribute(“Deal”);
private static void Prod_Error_Test()
{
string prodRequestXml = File.ReadAllText("ProdXml.xml");
var serializer = new XmlSerializer(typeof(Service.Deal));
Service.Deal request ;
var reader = new StringReader(prodRequestXml);
request = (Service.Deal)serializer.Deserialize(reader);
}