Десериализация XML в списки c#

202
29 августа 2017, 09:21

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

[Serializable]
[XmlRoot(ElementName = ("НСИ"))]
public class NSI
{
    [XmlElement(ElementName = "Справочники")]
    public List<CatalogClass> catalogclass
    {
        get; set;
    }
    [XmlAttribute(AttributeName = "Код")]
    public string code
    {
        get; set;
    }
}
public class CatalogClass
{
    [XmlElement(ElementName = "Справочник")]
    public List<Catalog> catalog
    {
        get; set;
    }
    [XmlAttribute(AttributeName = "Код")]
    public string code
    {
        get; set;
    }
}
public class Catalog
{
    [XmlElement(ElementName = "Значение")]
    public string value
    {
        get; set;
    }
    [XmlAttribute(AttributeName = "Код")]
    public string code
    {
        get; set;
    }
}

Для сериализации использую:

  var formatter = new XmlSerializer(typeof(NSI));
        using (FileStream fs = new FileStream(@"C:\Users\dank9\Desktop\gurn\spr.xml", FileMode.Open))
        {
            var newSpr = (NSI)formatter.Deserialize(fs);
            MessageBox.Show("Объект десериализован");
            foreach (CatalogClass o in newSpr.catalogclass)
            {
                MessageBox.Show("Код: {0}", o.code);
                foreach (Catalog i in o.catalog)
                {
                    MessageBox.Show("Код: {0}", i.code+"    -    "+i.value);
                }
            }
        }

Выходной XML:

    <?xml version = '1.0' encoding = 'windows-1251'?>
<НСИ>    
    <Справочники>
        <Справочник Код="210" Описание="Пол" Тип="3">
            <Значение Код="1">мужской</Значение>
            <Значение Код="2">женский</Значение>
        </Справочник>
        <Справочник Код="211" Описание="Периоды возрастов" Тип="3">
            <Значение Код="1">14  - 15 лет</Значение>
            <Значение Код="2">16-17 лет</Значение>
            <Значение Код="3">18-24 года</Значение>
            <Значение Код="4">25-29 лет</Значение>
            <Значение Код="5">30-39 лет</Значение>
            <Значение Код="6">50-59 лет</Значение>
            <Значение Код="7">60 лет и старше</Значение>
            <Значение Код="8">40-49 лет</Значение>
            <Значение Код="9">до 14 лет</Значение>
        </Справочник>
    </Справочники>
</НСИ>
READ ALSO
DoSomething что это?

DoSomething что это?

Разбираю тест там такой вопрос: Какие утверждения верны для типа X

249
Не срабатывает checkbox

Не срабатывает checkbox

Не срабатывает checkbox, на котором висит v-model:

321
Проблемы с console.log

Проблемы с console.log

В консоли ничего не отображается(версия браузера последняя, с кодировкой все порядке, файл с расширениемhtml)

229
Проблема при создании калькулятора

Проблема при создании калькулятора

Проблема в том, что при сложение двух чисел (создается сначала первое, потом при нажатии плюса, минуса, делить или умножить создается второе,...

187