C# XML反序列化:从xmlString到复杂类
这是我从数据库中获得的xml: 我得到的错误是:C# XML反序列化:从xmlString到复杂类,c#,.net,xml,class,deserialization,C#,.net,Xml,Class,Deserialization,这是我从数据库中获得的xml: 我得到的错误是: XML文档(1,2)中存在错误。请查看本文。您可以自动生成所需的所有内容,因此不必手动编写代码并出错 关于您在问题中的评论 基本上,我无法获取Library.Header.ID的值。我怎样才能做到呢 因为它是Library.Header.HeaderID而不是Library.Header.ID。。您的属性名为ID 在属性上使用并定义数据注释来映射元素 using System.Xml.Serialization; public class
XML文档(1,2)中存在错误。请查看本文。您可以自动生成所需的所有内容,因此不必手动编写代码并出错
关于您在问题中的评论 基本上,我无法获取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;}
}
我的新课程看起来像这样,工作起来很有魅力:
[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; }
}
[XmlRoot(“库”)]
公共班级图书馆
{
[XmlElement(“标题”)]
公共标头{get;set;}
[XmlElement(“书”)]
公共列表书籍{get;set;}
[XmlElement(“作者”)]
公共列表作者{get;set;}
}
公共类标题
{
public int HeaderID{get;set;}
}
公共课堂用书
{
公共字符串名称{get;set;}
公共字符串类别{get;set;}
公共字符串{get;set;}
}
公共类作者
{
公共字符串名称{get;set;}
}
考虑发布RequestXml
的实际值,而不是您认为的值应该是什么。发布完整的例外您的示例对我来说是有效的。我所要做的就是更改属性的大小写并将其公开,然后将其完全反序列化。当然,这假设XML中额外的“>”字符是工件,而不是实际文本的一部分。。。因为如果是的话,我想你已经发现了你的问题。当我试图将所有变量更改为public时。这很好用。尽管如此,反序列化并不会填充myTest中的值。我手工编码的原因是因为我不想要数组…当我使用xsd时,它会自动将我的列表作为数组。注意,DataType=“integer”
和DataType=“int”
在msdn链接的备注部分。我看到的问题是,您的xml代码片段有01。。我不确定你是否应该进行语法分析。非常感谢。这帮助我解决了这个问题。
String xData = RequestXml;
XmlSerializer x = new XmlSerializer(typeof(Library));
Library myTest = (Library)x.Deserialize(new StringReader(xData));
using System.Xml.Serialization;
public class Header
{
[XmlElement(DataType = "integer", ElementName = "HeaderID")]
int ID{get;set;}
}
[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; }
}