Parse XML string to class in C#?

35,538

Solution 1

You can just use XML serialization to create an instance of the class from the XML:

XmlSerializer serializer = new XmlSerializer(typeof(Book));
using (StringReader reader = new StringReader(xmlDocumentText))
{
    Book book = (Book)(serializer.Deserialize(reader));
}

Solution 2

There are several ways to deserialize an XML document - the XmlSerializer living in System.Xml.Serialization and the newer DataContractSerializer which is in System.Runtime.Serialization.

Both require that you decorate your class members with attributes that tell the serializer how to operate (different attributes for each).

Share:
35,538
Vivian River
Author by

Vivian River

Updated on July 03, 2020

Comments

  • Vivian River
    Vivian River almost 4 years

    Possible Duplicate:
    How to Deserialize XML document

    Suppose that I have a class that is defined like this in C#:

    public class Book
    {
        public string Title {get; set;}
        public string Subject {get; set;}
        public string Author {get; set;}
    }
    

    Suppose that I have XML that looks like this:

    <Book>
        <Title>The Lorax</Title>
        <Subject>Children's Literature</Subject>
        <Author>Theodor Seuss Geisel</Author>
    <Book>
    

    If I would like to instantiate an instance of the Book class using this XML, the only way I know of to do this is to use the XML Document class and enumerate the XML nodes.

    Does the .net framework provide some way of instantiating classes with XML code? If not, what are the best practices for accomplishing this?

  • cppanda
    cppanda almost 12 years
    +1 for the short and neat solution
  • Vivian River
    Vivian River almost 12 years
    This is working great in my project. Thanks!
  • AKS
    AKS about 8 years
    Simple and straight to the point..great..Thanks :)