我正在接收XML字符串,并希望将它们转换为c#对象。再确认一下,对吗?
这是我的班级:
[XmlRoot("xml")]
public class GenCrfeidData
{
[XmlAttribute("ccris_identity")]
public GenCrfeidCCRIS_Identity ccris_identity { get; set; }
[XmlAttribute("spga_identity")]
public GenCrfeIDSPGA_Identity spga_identity { get; set; }
}
public class GenCrfeidCCRIS_Identity
{
[XmlAttribute("item")]
public List<GenCrfeIDItem> item {get; set;}
}
public class GenCrfeIDItem
{
[XmlAttribute("CRefId")]
public string CRefId { get; set; }
[XmlAttribute("EntityKey")]
public string EntityKey { get; set; }
[XmlAttribute("EntityId")]
public string EntityId { get; set; }
[XmlAttribute("EntityId2")]
public string EntityId2 { get; set; }
[XmlAttribute("EntityName")]
public string EntityName { get; set; }
[XmlAttribute("EntityDOBDOC")]
public string EntityDOBDOC { get; set; }
[XmlAttribute("EntityGroupCode")]
public string EntityGroupCode { get; set; }
[XmlAttribute("EntityState")]
public string EntityState { get; set; }
[XmlAttribute("EntityNationality")]
public string EntityNationality { get; set; }
[XmlAttribute("CcrisNote")]
public string CcrisNote { get; set; }
}
public class GenCrfeIDSPGA_Identity
{
[XmlAttribute("SRefId")]
public string SRefId { get; set; }
[XmlAttribute("Name")]
public string Name { get; set; }
[XmlAttribute("IDCode")]
public string IDCode { get; set; }
[XmlAttribute("SpgaId")]
public string SpgaId { get; set; }
[XmlAttribute("Hit")]
public string Hit { get; set; }
}
这是我的代码:
string testData = @"<xml>
<ccris_identity>
<item>
<CrefId></CrefId>
<EntityKey></EntityKey>
<EntityId></EntityId>
<EntityId2/>
<EntityName></EntityName>
<EntityDOBDOC></EntityDOBDOC>
<EntityGroupCode></EntityGroupCode>
<EntityState/>
<EntityNationality></EntityNationality>
<CcrisNote/>
</item>
</ccris_identity>
<spga_identity>
<SRefId></SRefId>
<Name></Name>
<IdCode></IdCode>
<SpgaId></SpgaId>
<Hit></Hit>
</spga_identity>
</xml>";
XmlSerializer serializer = new XmlSerializer(typeof(GenCrfeidData));
using (StringReader reader = new StringReader(testData))
{
result = (GenCrfeidData)serializer.Deserialize(reader);
}
我得到了一个错误"无法序列化类型Test.Domain.Business.Entities.GenCrfeidCCRIS_Identity的成员'ccris_identity'。XmlAttribute/XmlText不能用于对复杂类型进行编码。">
<ccris_identity>
是一个元素,不是一个属性;你需要[XmlElement("ccris_identity")]
;基本上都是这样。
(<example bar="123"/>
中某属性为bar
)