Parse XML string to class in C#? [duplicate]

2019-03-08 21:51发布

问题:

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?

回答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));
}


回答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).



标签: c# .net xml class