Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/340.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# XML反序列化不需要';t初始化数组元素_C#_Xml_Serialization_Deserialization - Fatal编程技术网

C# XML反序列化不需要';t初始化数组元素

C# XML反序列化不需要';t初始化数组元素,c#,xml,serialization,deserialization,C#,Xml,Serialization,Deserialization,我正在尝试反序列化以下XML: <ns0:L2CCustomer xmlns:ns0="http://CustomerSyncFromMDM_L2C.L2CCustomer_XML"> <customerList> <customer> <DNV_Status>Active</DNV_Status> <MDM_ID>1270004</MDM_ID> <full

我正在尝试反序列化以下XML:

<ns0:L2CCustomer xmlns:ns0="http://CustomerSyncFromMDM_L2C.L2CCustomer_XML">
  <customerList>
    <customer>
      <DNV_Status>Active</DNV_Status>
      <MDM_ID>1270004</MDM_ID>
      <fullName>JONBER030</fullName>
      <AFFRowID>1-GT6E0X</AFFRowID>
      <addressList>
        <address>
          <addrType>Office</addrType>
          <addrStatus>Active</addrStatus>
          <MDM_ID>2090001</MDM_ID>
          <addrLine1>Tårnveien 14</addrLine1>
          <addrLine2>Buildling 2</addrLine2>
          <city>Ås</city>
          <postalCode>1430</postalCode>
          <country>Norway</country>
          <validCountryISO2>NO</validCountryISO2>
          <AFFRowID>1-GT6E13</AFFRowID>
        </address>
      </addressList>
    </customer>
   </customerList>
</ns0:L2CCustomer>
课程包括:

[Serializable]
[XmlRoot(ElementName = "L2CCustomer", Namespace = "http://CustomerSyncFromMDM_L2C.L2CCustomer_XML")]
[XmlType("L2CCustomer")]
public class AffinitasClientRoot
{
    [XmlArray("customerList")]
    [XmlArrayItem("customer")]
    public AffinitasClient[] Clients { get; set; }
}

[Serializable]
[XmlRoot(ElementName = "customer")]
[XmlType("customer")]
public class AffinitasClient
{
    [XmlElement(ElementName = "AFFRowID")]
    public string RowId { get; set; }
    [XmlElement(ElementName = "MDM_ID")]
    public string MdmId { get; set; }
    [XmlElement(ElementName = "fullName")]
    public string Name { get; set; }
    [XmlElement(ElementName = "DNV_Status")]
    public string Status { get; set; }
    public bool Active
    {
        get
        {
            return Status == "Active";
        }
    }
    [XmlArray("addressList")]
    [XmlArrayItem("address")]
    public AffinitasClientAddress[] Addresses { get; set; }
    [XmlElement(ElementName = "lastUpdatedByTimestamp")]
    public DateTime LastUpdateDate { get; set; }
    //[XmlElement(ElementName = "Updated")]
    //public DateTime LastUpdateDate { get; set; }
}

[Serializable]
[XmlRoot(ElementName = "address")]
[XmlType("address")]
public class AffinitasClientAddress
{
    [XmlElement(ElementName = "AFFRowID")]
    public string RowId { get; set; }
    [XmlElement(ElementName = "MDM_ID")]
    public string MdmId { get; set; }
    [XmlElement(ElementName = "addrType")]
    public string AddressType { get; set; }
    [XmlElement(ElementName = "addrStatus")]
    public string Status { get; set; }
    public bool Active
    {
        get
        {
            return Status == "Active";
        }
    }
    [XmlElement(ElementName = "addrLine1")]
    public string Address1 { get; set; }
    [XmlElement(ElementName = "addrLine2")]
    public string Address2 { get; set; }
    [XmlElement(ElementName = "city")]
    public string City { get; set; }
    [XmlElement(ElementName = "postalCode")]
    public string PostalCode { get; set; }
    [XmlElement(ElementName = "country")]
    public string Country { get; set; }
    [XmlElement(ElementName = "validCountryISO2")]
    public string CountryCode { get; set; }
    [XmlElement(ElementName = "lastUpdatedByTimestamp")]
    public DateTime LastUpdateDate { get; set; }
}

反序列化不会引发任何异常,但客户端数组为null。有什么办法可以解决吗?我已经试了好几个小时了,我想不出来了。

您的
AffinitasClientRoot
类应该是这样的:

public class AffinitasClientRoot
{
    [XmlArray("customerList", Namespace="")] // here!!!!
    [XmlArrayItem("customer")]
    public AffinitasClient[] Clients { get; set; }
}

也就是说,插入
Namespace=“
声明,从“命名名称空间”切换回“无名名称空间”。

WOW,太简单了。谢谢
public class AffinitasClientRoot
{
    [XmlArray("customerList", Namespace="")] // here!!!!
    [XmlArrayItem("customer")]
    public AffinitasClient[] Clients { get; set; }
}