Umieszczenie XmlRootAttribute podczas deserializacji do listy

Mam następujący 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>

To jest kod:

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; }
}

Wyjątkiem, który otrzymuję, jest:<Sites xmlns=''> was not expected.. Przyczyną tego błędu jest zazwyczaj brak zdefiniowania XmlRoot dlaXmlSerializer. Ale jak widać, zrobiłem to, ozdabiając klasęSite zXmlRootAttribute

Aby zakończyć moje zamieszanie, działa następująca sztuczka:

Zastąpić

var serializer = new XmlSerializer(typeof(List<Site>));

z

var serializer = new XmlSerializer(typeof(List<Site>), new XmlRootAttribute("Sites"));

Czy czegoś mi brakuje?

questionAnswers(2)

yourAnswerToTheQuestion