XmlRootAttribute-Platzierung beim Deserialisieren in List
Ich habe das folgende XML
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<Sites>
<Site>
<Code>TWTR</Code>
<Name>twitter.com</Name>
</Site>
<Site>
<Code>FB</Code>
<Name>facebook.com</Name>
</Site>
<Site>
<Code>SO</Code>
<Name>stackoverflow.com</Name>
</Site>
</Sites>
Dies ist der Code:
public class Program
{
static void Main(string[] args)
{
var fs = new FileStream(@"D:\temp\Sites.xml", FileMode.Open);
var serializer = new XmlSerializer(typeof(List<Site>));
var instance = (List<Site>)serializer.Deserialize(fs);
}
}
[XmlRoot("Sites")]
public class Site
{
public string Code { get; set; }
public string Name { get; set; }
}
Die Ausnahme, die ich bekomme, ist:<Sites xmlns=''> was not expected.
. Der Grund für diesen Fehler ist normalerweise, wenn ich kein XmlRoot für das definiereXmlSerializer
. Aber wie Sie sehen, habe ich das getan, indem ich die Klasse dekoriert habeSite
mit demXmlRootAttribute
Um meine Verwirrung zu vervollständigen, funktioniert der folgende Trick:
Ersetzen
var serializer = new XmlSerializer(typeof(List<Site>));
mit
var serializer = new XmlSerializer(typeof(List<Site>), new XmlRootAttribute("Sites"));
Vermisse ich etwas?