Я пытаюсь десериализовать XML-файл в массив объектов, но я получаю пустые объекты. Мой вопрос выглядит примерно так: How to Deserialize xml to an array of objects?, но я не могу создать класс, который наследует IXmlSerializable. Тем не менее, я не думаю, что этот подход необходим.Deserialize XML to Object Array
Я что-то не так?
Object File
[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; }
}
Doc Object
[XmlType("doc")]
public class Doc
{
[XmlElement("valA")]
public string ValA { get; set; }
[XmlElement("valB")]
public string ValB { get; set; }
}
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>
Десериализация код
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);
}
Я попытался изменить его к элементу, по-прежнему возвращает пустой массив. Да, просто опечатка для конечного тега. –
Я пробовал это, и это сработало отлично для меня. Также 'public HashSet Документы {get; задавать; } 'должно быть' public HashSet Docs {get; задавать; } ' –
' Id' и 'Company_Id' являются ли они также нулевыми? –