【发布时间】:2016-05-11 01:58:02
【问题描述】:
我在从 SQL Server 反序列化 XML 时遇到问题。 XML 很好;反序列化它的代码是已知的工作代码;但由于某种原因,它只是反序列化了第一级和第二级,这意味着该类与 XML 不匹配,但是在盯着它之后我无法识别它。
这是 XML 的摘录:
<Options>
<Countries>
<Country ID="1" Name="Afghanistan" Code="AF" ISO="4" SubDivision="City" PostalName="Postal Code" />
<Country ID="2" Name="Albania" Code="AL" ISO="8" SubDivision="City" PostalName="Postal Code" />
<Country ID="3" Name="Algeria" Code="DZ" ISO="12" SubDivision="City" PostalName="Postal Code" />
<Country ID="4" Name="American Samoa" Code="AS" ISO="16" SubDivision="City" PostalName="Postal Code" />
<Country ID="5" Name="Andorra" Code="AD" ISO="20" SubDivision="City" PostalName="Postal Code" />
</Countries>
<EntityTypes>
<EntityType ID="4" Name="Individual" />
<EntityType ID="5" Name="Business" />
</EntityTypes>
</Options>
这是Options 类:
namespace RecoverItWCF.Classes
{
[DataContract]
[Serializable()]
public class Options
{
[DataMember(Name = "Categories", IsRequired = false)]
[XmlElement("Categories")]
public Category[] Categories;
[DataMember(Name = "Countries", IsRequired = false)]
[XmlElement("Countries")]
public Country[] Countries;
[DataMember(Name = "EntityTypes", IsRequired = false)]
[XmlElement("EntityTypes")]
public EntityType[] EntityTypes;
}
}
这是Country 类:
namespace RecoverItWCF.Classes
{
[DataContract]
[Serializable()]
public class Country
{
[DataMember(Name = "ID", IsRequired = true)]
[XmlAttribute("ID")]
public string ID { get; set; }
[DataMember(Name = "Name", IsRequired = true)]
[XmlAttribute("Name")]
public string Name { get; set; }
// truncated for brevity
}
}
这是EntityType 类:
namespace RecoverItWCF.Classes
{
[DataContract]
[Serializable()]
public class EntityType
{
[DataMember(Name = "ID")]
[XmlAttribute("ID")]
public Int16 ID { get; set; }
[DataMember(Name = "Name")]
[XmlAttribute("Name")]
public string Name { get; set; }
}
}
Options 元素不包含Categories 元素(正确),但确实包含Countries 元素(正确),但Countries 级别下面没有任何内容(没有Country 数组)在断点处突出显示,它应该有 200 个Country 元素。它还包含一个EntityTypes 元素,但它下面没有任何内容。
【问题讨论】:
标签: c# .net web-services wcf deserialization