Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Deserializing XML from String C#

I am receiving XML strings,and would like to convert these to C# objects. Just to confirm, Is it correct?

This is my class :

[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; }
    }

This is my code :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

string testData = @"<xml>
                                        <ccris_identity>
                                            <item>
                                                <CrefId>1123603</CrefId>
                                                <EntityKey>8869901</EntityKey>
                                                <EntityId>670828-02-6001</EntityId>
                                                <EntityId2/>
                                                <EntityName>MOH AMAD ASRI BIN HAJI ABUBAKAR</EntityName>
                                                <EntityDOBDOC>1976-09-01</EntityDOBDOC>
                                                <EntityGroupCode>11</EntityGroupCode>
                                                <EntityState/>
                                                <EntityNationality>MY</EntityNationality>
                                                <CcrisNote/>
                                            </item>
                                        </ccris_identity>
                                        <spga_identity>
                                            <SRefId>42978</SRefId>
                                            <Name>MOHAMAD ASRI BIN HAJI ABU BAKAR</Name>
                                            <IdCode>C</IdCode>
                                            <SpgaId>670828026001</SpgaId>
                                            <Hit>1</Hit>
                                        </spga_identity>
                                    </xml>";

                XmlSerializer serializer = new XmlSerializer(typeof(GenCrfeidData));
                using (StringReader reader = new StringReader(testData))
                {
                    result = (GenCrfeidData)serializer.Deserialize(reader);
                }

And i got an error "Cannot serialize member ‘ccris_identity’ of type Test.Domain.Business.Entities.GenCrfeidCCRIS_Identity. XmlAttribute/XmlText cannot be used to encode complex types."

>Solution :

<ccris_identity> is an element, not an attribute; you need [XmlElement("ccris_identity")]; ditto basically everything.

(an attribute is bar in <example bar="123"/>)

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading