从字符串c#反序列化XML



我正在接收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)

最新更新