powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Десериализация xml-файла
8 сообщений из 8, страница 1 из 1
Десериализация xml-файла
    #38790740
erman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!
Помогите, пожалуйста, разобраться с xml-десериализацией. Есть xml-файл :
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
<?xml version="1.0" encoding="utf-8"?>

<ScriptsModel xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <Scripts>
    
    <Script Name="Script">
      <Commands>        
        <Command Type = "CreateFolder" To = "L:\WPF\Deserialize_XML\&alt;DDMMYYY&gt;" />
        <Command Type = "CopyFolderContent" From = "F:\FromFolder" To = "L:\WPF\alt;DDMMYYY&gt;">
          <FilterItemList>
            <FilterItem>.878</FilterItem>   
            <FilterItem>hpd</FilterItem>
            <FilterItem>.psk</FilterItem>
          </FilterItemList>
        </Command>    
        <Command Type = "CleanFolderContent" To = "L:\WPF\Deserialize_XML\&alt;DDMMYYY&gt;" />      
      </Commands>    
    </Script>
    
    <Script Name="Script_2">
      <Commands>        
        <Command Type = "CreateFolder" To = "L:\WPF\Deserialize_XML\&alt;DDMMYYY&gt;" />
        <Command Type = "CopyFolderContent" From = "L:\WPF\Deserialize_XML" To = "C:\Intel\alt;DDMMYYY&gt;">
          <FilterItemList>
            <FilterItem>.txt</FilterItem>   
            <FilterItem>.bak</FilterItem>
          </FilterItemList>
        </Command>    
        <Command Type = "CleanFolderContent" To = "L:\WPF\Deserialize_XML\&alt;DDMMYYY&gt;" />      
      </Commands>    
    </Script>
  
  </Scripts>

</ScriptsModel>



Написал класс Command для соответствия элементов и атрибутов в xml-файле.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
public class Command
    {      
       
        public string _type;
        [XmlAttributeAttribute(AttributeName = "Type")]
        public string Type
        {
            get { return _type; }
            set
            {
                _type = value;
            }
        }

        public string _from;
        [XmlAttributeAttribute(AttributeName = "From")]
        public string From
        {
            get { return _from; }
            set
            {
                _from = value;
            }
        }

        public string _to;
        [XmlAttributeAttribute(AttributeName = "To")]
        public string To

        {
            get { return _to; }
            set
            {
                _to = value;
            }
        }

        public string _filterItem;
        [XmlElementAttribute()]
        public string FilterItem
        {
            get { return _filterItem; }
            set
            {
                _filterItem = value;
            }
        }        
    }
}



Правильно ли написан класс или нужно ещё что-то дописать?
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38790873
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ermanПомогите, пожалуйста, разобраться с xml-десериализацией. Есть xml-файл :
А схему этого файла вам случаем не давали?
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38791060
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79А схему этого файла вам случаем не давали?
и так сгенерится по этому файлу
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38791088
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилArm79А схему этого файла вам случаем не давали?
и так сгенерится по этому файлу
Да, но не факт, что правильная :-) А если бы была исходная схема, то и с классами париться бы не пришлось
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38791123
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arm79Да, но не факт, что правильная :-)
по этому файлу - достаточно адекватная
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38791396
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо, автор вам за количество текста платят?
зачем столько лишнего написано?
Но лично я бы сделал по другому. Во первых, я бы создал баззовый класс BaseCommand, затем все команды которые различаются у вас по типу я бы разбил на разные классы типа, CreateFolderCommand : BaseCommand, нужно не забывать указать [XmlInclude(typeof)] атрибут для базового класса. Тогда у вас каждая команда будет иметь набор базовых и уникальных только для себя свойств. А логику работы для каждой команды опишите в разных классах. Но дело ваше.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
    [XmlRoot("ScriptsModel")]
    public class ScriptsModel 
    {
        [XmlArray("Scripts"), XmlArrayItem("Script")]
        public List<Script> FilterItems { set; get; } 
    }

    public class Script
    {
        [XmlAttribute("Name")]
        public string Name { set; get; }
        [XmlArray("Commands"), XmlArrayItem("Command")]
        public List<Command> Commands { set; get; } 
    }

    public class Command
    {
        [XmlAttribute("CommandType")]
        public CommandType CommandType { set; get; }
        [XmlAttribute("From")]
        public string From { set; get; }
        [XmlAttribute("To")]
        public string To { set; get; }
        [XmlArray("FilterItemList"), XmlArrayItem("FilterItem")]
        public List<string> FilterItems { set; get; } 

    }

    public enum CommandType
    {
        CleanFolderContent,
        CreateFolder
    }
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38791835
Фотография Belavik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Класс можно руками не писать, смотреть в сторону xsd.exe
...
Рейтинг: 0 / 0
Десериализация xml-файла
    #38792168
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BelavikКласс можно руками не писать, смотреть в сторону xsd.exe плюсстопитсот
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Десериализация xml-файла
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]