【发布时间】:2024-01-07 05:02:01
【问题描述】:
这是我从数据库中得到的 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 字符串反序列化到类对象 - 库中。目前我正在使用以下代码,但出现错误:
String xData = RequestXml;
XmlSerializer x = new XmlSerializer(typeof(Library));
Library myTest = (Library)x.Deserialize(new StringReader(xData));
我得到的错误是:
XML 文档 (1, 2) 中存在错误。
【问题讨论】:
-
考虑发布
RequestXml的实际值,而不是您认为的值。 -
发布完整的例外情况
-
您的示例对我来说按原样工作。我所要做的就是更改您的属性的外壳并将它们公开并完美地反序列化。
-
当然,这假设您的 XML 中额外的 ">" 字符是人工制品,而不是实际文本的一部分......因为如果它们是,那么,我想你已经找到了你的问题.
-
当我尝试将所有变量更改为公共时。这工作正常。虽然,反序列化不会填充 myTest 中的值。
标签: c# .net xml class deserialization