XML 反序列化无效 - XML 文档 (0, 0) 中存在错误

XML deserialization not working - there is an error in XML document (0, 0)

我正在尝试反序列化 XML 响应,但我似乎无法理解此处不起作用的原因

这些是我的 类(使用 .NET 开发人员工具生成)

[Serializable]
[XmlType(AnonymousType = true, Namespace = "http://www.crs.lombardia.it/schemas/DCSanita/GSSC/2007-01/calcolaIup/")]
[XmlRoot("GSSC.calcolaIupResponse", Namespace = "http://www.crs.lombardia.it/schemas/DCSanita/GSSC/2007-01/calcolaIup/", IsNullable = false)]
public partial class GSSCcalcolaIupResponse
{
    private param1 paramField;

    /// <remarks/>
    [XmlElementAttribute(Namespace = "")]
    public param1 param
    {
        get
        {
            return this.paramField;
        }
        set
        {
            this.paramField = value;
        }
    }
}

/// <remarks/>
[XmlType(AnonymousType = true)]
public partial class param1
{
    private string iupField;

    /// <remarks/>
    public string iup
    {
        get
        {
            return this.iupField;
        }
        set
        {
            this.iupField = value;
        }
    }
}

xml 响应是这样的:

<m:GSSC.calcolaIupResponse xmlns:m="http://www.crs.lombardia.it/schemas/DCSanita/GSSC/2013-01/calcolaIup/">
    <param>
        <iup>0000W05RNF</iup>
    </param>
</m:GSSC.calcolaIupResponse>

这是反序列化的代码。

GSSCcalcolaIupResponse iup = new GSSCcalcolaIupResponse();
XmlSerializer serializer = new XmlSerializer(typeof(GSSCcalcolaIupResponse));

IUPDummyResponse retValue = new IUPDummyResponse();

using (TextReader reader = new StringReader(xml))
{
    if (soapFault == null)
        iup = (GSSCcalcolaIupResponse)serializer.Deserialize(reader);
}

class GSSCcalcolaIupResponse 中的名称空间与 xml 字符串中的名称空间不同。这就是原因。只需更改为使用相同的命名空间,它就会修复错误:

- http://www.crs.lombardia.it/schemas/DCSanita/GSSC/2007-01/calcolaIup/
- http://www.crs.lombardia.it/schemas/DCSanita/GSSC/2013-01/calcolaIup/