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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage