这是我从数据库中得到的xml:
> <Library> > <Header> > <HeaderID>01</HeaderID> > </Header> > <Books> > <Book> > <Name>Book1</Name> > <Category>Fiction</Category> > <Authors>2</Authors> > </Book> > <Book> > <Name>Book2</Name> > <Category>Non - Fiction</Category> > <Authors>1</Authors> > </Book> > </Books> > <Authors> > <Author> > <Name>Author1ForBook1</Name> > </Author> > <Author> > <Name>Author2ForBook1</Name> > </Author> > <Author> > <Name>Author1ForBook2</Name> > </Author> > </Authors> ></Library>
这是我的班级:
public class Library
{
public Header header{get; set;}
public List<Book> books{get;set;}
public List<Author> authors{get;set;}
}
public class Header
{
int ID{get;set;}
}
public class Book
{
string Name{get; set;}
string Category{get; set;}
string Fiction{get; set;}
}
public class Author
{
string Name{get;set;}
}
我希望能够将从数据库中获取的xml字符串反序列化为类对象 - Library。目前我正在使用以下代码,但是我收到一个错误:
String xData = RequestXml;
XmlSerializer x = new XmlSerializer(typeof(Library));
Library myTest = (Library)x.Deserialize(new StringReader(xData));
我得到的错误是:
XML文档(1,2)中存在错误。
答案 0 :(得分:1)
查看这篇文章。您可以自动生成所需的一切,因此您无需手动编码并制造错误。
答案 1 :(得分:1)
我的新课程看起来像这样,就像一个魅力:
[XmlRoot("Library")]
public class Library
{
[XmlElement("Header")]
public Header header { get; set; }
[XmlElement("Book")]
public List<Book> books { get; set; }
[XmlElement("Author")]
public List<Author> authors { get; set; }
}
public class Header
{
public int HeaderID { get; set; }
}
public class Book
{
public string Name { get; set; }
public string Category { get; set; }
public string Fiction { get; set; }
}
public class Author
{
public string Name { get; set; }
}
答案 2 :(得分:0)
关于你对问题的评论。
基本上我无法获得Library.Header.ID的值。我怎样才能实现它?
因为它是Library.Header.HeaderID
而不是Library.Header.ID
..您的媒体资源名为ID
..
在您的媒体资源上使用和定义数据注释来映射元素
using System.Xml.Serialization;
public class Header
{
[XmlElement(DataType = "integer", ElementName = "HeaderID")]
int ID{get;set;}
}
http://msdn.microsoft.com/en-us/library/system.xml.serialization.xmlelementattribute(v=vs.110).aspx