C# 如何在C语言中将嵌套的XML文件反序列化为对象#
我遇到了一个非常复杂的XML结构,我认为它就像嵌套的2D数组。但我的定义似乎不起作用。 我有一个如下所示的Xml结构C# 如何在C语言中将嵌套的XML文件反序列化为对象#,c#,arrays,xml,serialization,C#,Arrays,Xml,Serialization,我遇到了一个非常复杂的XML结构,我认为它就像嵌套的2D数组。但我的定义似乎不起作用。 我有一个如下所示的Xml结构 <Rate> <GROUP> <GROUPNAME>Company</GROUPNAME> <COUNTY>Dawson</COUNTY> </GROUP> <EMPLOYEES> <MEMBERS> <MEMBER>
<Rate>
<GROUP>
<GROUPNAME>Company</GROUPNAME>
<COUNTY>Dawson</COUNTY>
</GROUP>
<EMPLOYEES>
<MEMBERS>
<MEMBER>
<SEQUENCENUM>1</SEQUENCENUM>
<GENDER>M</GENDER>
<RELATIONSHIP>Father</RELATIONSHIP>
</MEMBER>
<MEMBER>
<SEQUENCENUM>2</SEQUENCENUM>
<GENDER>F</GENDER>
<RELATIONSHIP>Mother</RELATIONSHIP>
</MEMBER>
</MEMBERS>
<MEMBERS>
<MEMBER>
<SEQUENCENUM>1</SEQUENCENUM>
<GENDER>M</GENDER>
<RELATIONSHIP>Father</RELATIONSHIP>
</MEMBER>
<MEMBER>
<SEQUENCENUM>2</SEQUENCENUM>
<GENDER>Y</GENDER>
<RELATIONSHIP>Mother</RELATIONSHIP>
</MEMBER>
</MEMBERS>
</EMPLOYEES>
你们有什么好主意吗?对于此嵌套数组?将
NestingLevel=1
添加到XmlArrayItem
属性中
此类将反序列化您的XML
[Serializable]
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false)]
public class Rate
{
[XmlElement("GROUP")]
public Group Group { get; set; }
[XmlArrayItem("MEMBERS", IsNullable = false)]
[XmlArrayItem("MEMBER", IsNullable = false, NestingLevel = 1)]
public Member[][] EMPLOYEES { get; set; }
}
[XmlType(AnonymousType = true)]
public class Group
{
[XmlElement("GROUPNAME")]
public string Name { get; set; }
[XmlElement("COUNTY")]
public string Country { get; set; }
}
[XmlType(AnonymousType = true)]
public class Member
{
[XmlElement("SEQUENCENUM")]
public byte Sequencenum { get; set; }
[XmlElement("GENDER")]
public string Gender { get; set; }
[XmlElement("RELATIONSHIP")]
public string Relationship { get; set; }
}
谢谢,咖啡先生,真是太好了。我只是添加了另一个
[XmlArrayItem(ElementName=“MEMBERS”,NestedLevel=0)]
。真的很棒。
[XmlRoot("EMPLOYEES")]
public class Members
{
[XmlArray("MEMBERS")]
[XmlArrayItem("MEMBER", typeof(MemberInfo))]
public List<MemberInfo> Members{get; set;}
}
[XmlRoot("Member")]
public class MemberInfo
{
public string SequenceNum{get; set;}
[XmlElement("GENDER")]
public string Gender{get; set;}
[XmlElement("RELATIONSHIP")]
public string Relationship{get; set}
}
[Serializable]
[XmlType(AnonymousType = true)]
[XmlRoot(Namespace = "", IsNullable = false)]
public class Rate
{
[XmlElement("GROUP")]
public Group Group { get; set; }
[XmlArrayItem("MEMBERS", IsNullable = false)]
[XmlArrayItem("MEMBER", IsNullable = false, NestingLevel = 1)]
public Member[][] EMPLOYEES { get; set; }
}
[XmlType(AnonymousType = true)]
public class Group
{
[XmlElement("GROUPNAME")]
public string Name { get; set; }
[XmlElement("COUNTY")]
public string Country { get; set; }
}
[XmlType(AnonymousType = true)]
public class Member
{
[XmlElement("SEQUENCENUM")]
public byte Sequencenum { get; set; }
[XmlElement("GENDER")]
public string Gender { get; set; }
[XmlElement("RELATIONSHIP")]
public string Relationship { get; set; }
}