Проблема с десериализацией из XML

170
17 апреля 2018, 01:41

Помогите разобраться с десериализацией.

Создал XML, хочется именно такой вид, но не получается его распарсить. Все время теряется верхний уровень иерархии

XML

<calc xmlns="calc.xsd" version="1.0">
    <node name="Геометрия">
        <node name="Объемы"></node>
    </node>
</calc>

calc

    [Serializable]
    [XmlRoot("calc", Namespace = "calc.xsd")]
    public class CalcTemplate
    {
        [XmlArray("node")]
        [XmlArrayItem("node")]
        public ObservableCollection<Node> Nodes
        {
            get;
            set;
        }
        [XmlAttribute("version")]
        public string Version
        {
            get;
            set;
        }
    }

node

    [XmlRoot("calc", Namespace = "calc.xsd")]
    public class Node
    {
        [XmlAttribute("name")]
        public string Name
        {
            get; set;
        }
        [XmlArray("node")]
        [XmlArrayItem("node")]
        public ObservableCollection<Node> Children
        {
            get;
            set;
        }
    }
}

Верхним уровнем иерархии становится раздел "объемы", а первый почему-то пропускается. Чувствую, что ошибка где-то в описании calc, но не понимаю в чем. Если атрибуты убрать, то само собой, вообще пустой список приходит.

Десериализую так:

            var serializer = new XmlSerializer(typeof(CalcTemplate));
            template = (CalcTemplate)serializer.Deserialize(xmlReader);
            xmlReader.Close();
Answer 1

Попробуйте так

[XmlRoot("calc", Namespace = "calc.xsd")]
public class Node
{
    [XmlAttribute("name")]
    public string Name
    {
        get; set;
    }
    [XmlElement("node")]
    public ObservableCollection<Node> Children
    {
        get;
        set;
    }
}

[Serializable]
[XmlRoot("calc", Namespace = "calc.xsd")]
public class CalcTemplate
{   
    [XmlElement("node")]
    public ObservableCollection<Node> Nodes
    {
        get;
        set;
    }
    [XmlAttribute("version")]
    public string Version
    {
        get;
        set;
    }
}
READ ALSO
C# RichTextBox странное поведение курсора над текстом

C# RichTextBox странное поведение курсора над текстом

Имею простое приложение c# Windows formДалее есть единственная форма с контролом richtextbox, который закреплен на всей форме(по размеру)

197
Entity-framework анонимные объекты

Entity-framework анонимные объекты

Есть 2 моделькиКоманда и тренер

187
Изменение размера иконки svg через css

Изменение размера иконки svg через css

Есть сайт на WordPress и тема AppointmentДля того чтобы вставить свои иконки вместо Font-Awesome использовал следующий код в таблице стилей, но изменить...

278
CSS на мобильной версии сайта. Ошибка

CSS на мобильной версии сайта. Ошибка

Доброго времени сутокПытаюсь перенести сайт с конструктора на хостин, все вроде скопировал, немного видоизменил но возникла проблема, с боковым...

218