Jam*_*son 9 c# xml serialization
我正在尝试将XML文件反序列化为对象数组,但我收到的是空对象.我的问题看起来类似于:如何将xml反序列化为对象数组?但我似乎无法创建一个继承IXmlSerializable的类.也就是说,我不认为这种方法是必要的.
难道我做错了什么?
文件对象
[XmlType("file")]
public class File
{
[XmlElement("id")]
public string Id { get; set; }
[XmlElement("company_name")]
public string Company_Name { get; set; }
[XmlElement("docs")]
public HashSet<doc> Docs { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
Doc对象
[XmlType("doc")]
public class Doc
{
[XmlElement("valA")]
public string ValA { get; set; }
[XmlElement("valB")]
public string ValB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
XML
<?xml version="1.0" encoding="UTF-8"?>
<files>
<file>
<id>12345</id>
<company_name>Apple</company_name>
<docs>
<doc>
<valA>Info</valA>
<valB>More Info</valB>
</doc>
</docs>
</file>
<file>
<id>12345</id>
<company_name>Microsoft</company_name>
<docs>
<doc>
<valA>Even More Info</valA>
<valB>Lots of it</valB>
</doc>
</docs>
</file>
</files>
Run Code Online (Sandbox Code Playgroud)
反序列化代码
XmlSerializer mySerializer = new XmlSerializer(typeof(File[]), new XmlRootAttribute("files"));
using (FileStream myFileStream = new FileStream("Files.xml", FileMode.Open))
{
File[] r;
r = (File[])mySerializer.Deserialize(myFileStream);
}
Run Code Online (Sandbox Code Playgroud)
Roh*_*ats 11
您已使用属性修饰了属性,XMLAttribute但它们是XML中的元素.所以,全部XMLAttribute改为XmlElement.
[XmlType("file")]
public class File
{
[XmlElement("id")]
public string Id { get; set; }
[XmlElement("company_name")]
public string Company_Id { get; set; }
[XmlArray("docs")]
public HashSet<Doc> Docs { get; set; }
}
[XmlType("doc")]
public class Doc
{
[XmlElement("valA")]
public string ValA { get; set; }
[XmlElement("valB")]
public string ValB { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你的XML也不是很好.我猜这是错误的 -
<company_name>Apple</company_id>
<company_name>Microsoft</company_id>
Run Code Online (Sandbox Code Playgroud)
结尾标记应为company_name-
<company_name>Apple</company_name>
<company_name>Microsoft</company_name>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18534 次 |
| 最近记录: |