Ошибка при десериализации XML файла в C#

Всем привет, столкнулся с такой ошибкой при десериализации XML файла: System.InvalidOperationException: There is an error in XML document (2, 2).

Мой C# код, который читает файл:

[Serializable, XmlRoot("errors"), XmlType("errors")]
public class Errors
{
    [XmlType("error")]
    public class Error
    {
        [XmlElement("name")]
        public string TypeError { get; set; }
        [XmlElement("description")]
        public string Description { get; set; }
    }
    [XmlElement("error")]
    public List<Error> errors { get; private set; }
    public Errors()
    {
        XmlSerializer serializer = new XmlSerializer(typeof(Errors));

        using (Stream reader = new FileStream("ErrorString.xml", FileMode.Open))
        {
            errors = (List<Error>)serializer.Deserialize(reader);
        }
    }
}

Мой XML - документ:

<?xml version="1.0" encoding="utf-8" ?>
<errors>
    <error>
        <name>NOT_ENOUGH_SEARCH_LENGTH</name>
        <description>Require at least 3 characters</description>
    </error>
    <error>
        <name>INVALID_SEARCH</name>
        <description>The search is invalid</description>
    </error>
    <error>
        <name>SEARCH_NOT_SPECIFIED</name>
        <description>Empty search field</description>
    </error>
    <error>
        <name>INVALID_FIELDS</name>
        <description>Inputed filed isn't correct</description>
    </error>
    <error>
        <name>ACCOUNT_ID_NOT_SPECIFIED</name>
        <description>Application id haven't been provided</description>
    </error>
    <error>
        <name>METHOD_DISABLED</name>
        <description>Function in API was diasbled by Wargaming</description>
    </error>
    <error>
        <name>APPLICATION_IS_BLOCKED</name>
        <description>Your application ID have been banned by Wargaming</description>
    </error>
    <error>
        <name>INVALID_IP_ADDRESS</name>
        <description>IP address is not allow for server application</description>
    </error>
    <error>
        <name>SOURCE_NOT_AVAILABLE</name>
        <description>Data isn't available</description>
    </error>
</errors>

Данная ошибка у меня происходит при тестировании. При нормальной работе - не проверял, так как пишу библиотеку. При дебаге теста, у меня почему - то после первого прочтения, дебаг кидает так, будто только-только вошел в конструктор и выбивает внутреннюю ошибку о том, что он не может открыть файл.


Ответы (1 шт):

Автор решения: Yitzhak Khabinsky

Вот полностью рабочий пример десериализации для вашего XML-файла.

c#

void Main()
{
    const string fileName = @"e:\Temp\Errors.xml";
    Errors errors;
    
    XmlSerializer serializer = new XmlSerializer(typeof(Errors));

    using (Stream reader = new FileStream(fileName, FileMode.Open))
    {
        errors = (Errors)serializer.Deserialize(reader);
    }
}

[XmlRoot("errors")]
public class Errors
{
    [XmlElement(ElementName = "error")]
    public List<Error> errors { get; set; }
}

[XmlType("error")]
public class Error
{
    [XmlElement("name")]
    public string TypeError { get; set; }
    [XmlElement("description")]
    public string Description { get; set; }
}

Результат введите сюда описание изображения

→ Ссылка