Проблема с использованием XmlSerializer - PullRequest
0 голосов
/ 08 ноября 2018

Вот мой код C #:

        public static T Deserialize<T>(string input) where T : class
        {
            System.Xml.Serialization.XmlSerializer ser = 
              new System.Xml.Serialization.XmlSerializer(typeof(T));

            using (StringReader sr = new StringReader(input))
            {
                var test = ser.Deserialize(sr); //*this is the line that breaks*
                return (T)ser.Deserialize(sr);
            }
        }

А вот и мой XML

<releaseinfo>
<mediapackagedirectory>C:\\Temp\\Test1\\</mediapackagedirectory>
<revision>A</revision>
<files>
    <file>C:\\Temp\\Test1\\test1.zip</file>
    <file>C:\\Temp\\Test1\\test1.zip</file>
</files>
<target>C:\\Temp\\Target\\</target>
</releaseinfo>

И вот ошибка, которую я получаю:

Exception: {"There is an error in XML document (1, 2)."}
InnerException: {"<releaseinfo xmlns=''> was not expected."}

Кажется, ошибка, которую я получаю, как-то связана с пространством имен, хотя мой xml не имеет пространств имен. Это именно так, как показано.

1 Ответ

0 голосов
/ 08 ноября 2018

Предполагая, что у вас есть некоторый класс "Releaseinfo", добавьте следующий атрибут в начало:

[Serializable, XmlRoot("releaseinfo")]
public partial class Releaseinfo
{
...
}

Вот более подробная информация:

Класс XmlRootAttribute

ТАКЖЕ:

  • В: Почему вы дважды десериализуетесь? Почему не просто return (T)ser.Deserialize(sr);? Была ли первая строка просто «тестовым кодом»?

  • Примечание: пожалуйста, старайтесь по возможности использовать текст (вместо снимков экрана).

...