2012-07-02 5 views
8

Можно создать дубликат:
How to Deserialize XML documentАнализ XML-строки в классе на C#?

Предположим, что у меня есть класс, который определяется как это в C#:

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

Предположим, что у меня есть XML, который выглядит следующим образом :

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

Если я хотел бы создать экземпляр класса Book с использованием этого XML, единственным способом, который я знаю, является использование класса XML Document и перечисление узлов XML.

Предоставляет ли .NET Framework какой-либо способ создания классов с помощью XML-кода? Если нет, каковы наилучшие методы для этого?

+0

К сожалению для дубликата. Спасибо за ответы! :-) –

ответ

37

Вы можете просто использовать XML-сериализации, чтобы создать экземпляр класса из XML:

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

+1 для короткого и аккуратного решения – cppanda

+0

Это отлично работает в моем проекте. Благодаря! –

+0

Простой и прямой в точку..большой .. Спасибо :) – AKS

8

Есть несколько способов десериализации XML-документ - XmlSerializer жизни в System.Xml.Serialization и новее DataContractSerializer, который находится в System.Runtime.Serialization.

Оба требуют, чтобы вы украшали своих членов атрибутами, которые говорят о том, как работать с serializer (разные атрибуты для каждого).

Смежные вопросы