Reputation: 3
I've been trying to de serialise an XML file into a list, but whatever I do, the list ends up with a count of 0.
I've been searching Stack like I normally do, tried all kinds of things, but am at my wit's end. What's going wrong here?
My XML:
<?xml version="1.0" encoding="utf-8"?>
<lijst>
<lijst_item>
<id>1</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
<lijst_item>
<id>2</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
<lijst_item>
<id>3</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
</lijst>
Lijst_item object:
[XmlType("Lijst_item")]
public class Lijst_item
{
[XmlAttribute("id", DataType = "int")]
public int ID { get; set; }
[XmlElement("naam")]
public string Name { get; set; }
[XmlElement("archived", DataType ="boolean")]
public bool isArchived { get; set; }
public Lijst_item()
{
}
public Lijst_item(int id, string name, bool archived)
{
this.ID = id;
this.Name = name;
this.isArchived = archived;
}
}
Code used to de serialise:
using (StreamReader sr = new StreamReader(sFile))
{
XmlSerializer deserializer = new XmlSerializer(typeof(List<Lijst_item>), new XmlRootAttribute("lijst"));
var Test = (List<Lijst_item>)deserializer.Deserialize(sr);
}
Convert xml to List by Deserialize in c# Did not help me: Exactly what am I doing wrong? Is my XML malformed? My object? Can I for some reason not use a List?
Upvotes: 0
Views: 86
Reputation: 1556
Try this...
Usings...
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Xml;
using System.Xml.Serialization;
Classes...(created using your XML at http://xmltocsharp.azurewebsites.net/)
[XmlRoot(ElementName = "lijst_item")]
public class Lijst_item
{
[XmlElement(ElementName = "id")]
public string Id { get; set; }
[XmlElement(ElementName = "naam")]
public string Naam { get; set; }
[XmlElement(ElementName = "archived")]
public string Archived { get; set; }
}
[XmlRoot(ElementName = "lijst")]
public class Lijst
{
[XmlElement(ElementName = "lijst_item")]
public List<Lijst_item> Lijst_item { get; set; }
}
Code...
string strXML = @"<?xml version=""1.0"" encoding=""utf-8""?>
<lijst>
<lijst_item>
<id>1</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
<lijst_item>
<id>2</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
<lijst_item>
<id>3</id>
<naam>NAME REDACTED</naam>
<archived>false</archived>
</lijst_item>
</lijst>";
byte[] bufXML = ASCIIEncoding.UTF8.GetBytes(strXML);
MemoryStream ms1 = new MemoryStream(bufXML);
// Deserialize to object
XmlSerializer serializer = new XmlSerializer(typeof(Lijst));
try
{
using (XmlReader reader = new XmlTextReader(ms1))
{
Lijst deserializedXML = (Lijst)serializer.Deserialize(reader);
}// put a break point here and mouse-over Label1Text and Label2Text ….
}
catch (Exception ex)
{
throw;
}
Upvotes: 1