powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# XML Deserialize
10 сообщений из 10, страница 1 из 1
c# XML Deserialize
    #39045151
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Мне нужно Deserialize xml file

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
<payload_definition enable_stabilizer="1" implementation="Plugins/GenericPRPayloadModelImpl.dll">
	<gimbal_strategy>	
		<gimbal type="2" value="0.0" max_rate="180.0">
                     <gimbal_limits min="-170" max="170"/> <!--Проблема-->
                </gimbal>	
		<gimbal type="1" value="0.0" max_rate="180.0"> 
			<gimbal_limits min="-130.0" max="-20.0"/>  <!--Проблема-->
		</gimbal>	
                <gimbal type="0" value="0" max_rate="0"/>
	</gimbal_strategy>
</payload_definition>



Есть код!
Код: 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.
50.
51.
52.
53.
54.
55.
56.
57.
58.
namespace ReadXml
{
    [Serializable]
    public class GimbalLimits
    {
        [XmlAttribute("min")]
        public uint Min { get; set; }

        [XmlAttribute("Max")]
        public uint Max { get; set; }
    }

    [Serializable]
    public class GimbalStrategy
    {
        [XmlAttribute("type")]
        public uint Type { get; set; }

        [XmlAttribute("value")]
        public double Value { get; set; }

        [XmlAttribute("max_rate")]
        public double MaxRate { get; set; }

        [XmlElement]
        public GimbalLimits Limits { get; set; }

    }

    [Serializable]
    [XmlRoot("payload_definition")]
    public class PayloadConfig
    {
        [XmlArray("gimbal_strategy")]
        [XmlArrayItem("gimbal", typeof(GimbalStrategy))]
        public List<GimbalStrategy> GimbalStrategyList { get; set; }

        // implementation="Plugins/GenericPRPayloadModelImpl.dll"
        [XmlAttribute("implementation")]
        public string Implementation { get; set; }
    }


    public class Deserialize
    {
        PayloadConfig payload = null;
        string path = "cars.xml";

        XmlSerializer serializer = new XmlSerializer(typeof(PayloadConfig));

        public Deserialize()
        {
            StreamReader reader = new StreamReader(path);
            payload = (PayloadConfig)serializer.Deserialize(reader);

        }
    }
}



Не могу загрузить Елемент <gimbal_limits min="-130.0" max="-20.0"/> в Елементе <gimbal>

Помогите пожалуйста!
Спасибо!
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39045228
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdm77,
ругается на null reference exception?
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39045233
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
felix_ff,

[XmlArrayItem("gimbal", typeof(GimbalStrategy))] => [XmlArrayItem("gimbal")]
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39045235
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,
спасибо, решил!

1.
Код: c#
1.
2.
 [XmlAttribute("Max")]
     public uint Max { get; set; }



a в файле "max" (маленькие буквы)

2.
Код: c#
1.
2.
3.
    [XmlElement]
    public GimbalLimits Limits { get; set; }
   



должно быть:

Код: c#
1.
2.
3.
    [XmlElement("gimbal_limits")]
    public GimbalLimits Limits { get; set; }
   
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39046077
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Дополнительный вопрос.

Есть файл:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
<payload_definition enable_stabilizer="1" implementation="Plugins/GenericPRPayloadModelImpl.dll">
	<gimbal_strategy>	
		<gimbal type="2" value="0.0" max_rate="180.0">
                     <gimbal_limits min="-170" max="170"/> <!--Проблема-->
                </gimbal>	
		<gimbal type="1" value="0.0" max_rate="180.0"> 
			<gimbal_limits min="-130.0" max="-20.0"/>  <!--Проблема-->
		</gimbal>	
                <gimbal type="0" value="0" max_rate="0"/>
	</gimbal_strategy>

	<gimbal_strategy_1>	<!--новый-->
		<gimbal type="2" value="0.0" max_rate="180.0">
                     <gimbal_limits min="-170" max="170"/> <!--Проблема-->
                </gimbal>	
		<gimbal type="1" value="0.0" max_rate="180.0"> 
			<gimbal_limits min="-130.0" max="-20.0"/>  <!--Проблема-->
		</gimbal>	
                <gimbal type="0" value="0" max_rate="0"/>
	</gimbal_strategy_1>

</payload_definition>



У меня в Serializer прописанно, что работать надо с елементом <gimbal_strategy> ,
но когда я сохраняю изменения обратно в файл, то <gimbal_strategy_1> стирается.

Можно избежать такого бага?

Спасибо!
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39046109
Axeleron в бане2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdm77,
Задать в контракте проперти gimbal_strategy_1 и заполнять при сохранении и его. Так как gimbal_strategy и gimbal_strategy_1 - разные проперти.
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39046394
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Axeleron в бане2bdm77,
Задать в контракте проперти gimbal_strategy_1 и заполнять при сохранении и его. Так как gimbal_strategy и gimbal_strategy_1 - разные проперти.

А если есть gimbal_strategy_1, ..._2 , ..._3 и т.д. то надо каждый прописывать?? М.б. есть возможность записать только измененный проперти?
Спасибо
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39046730
Axeleron в бане2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bdm77,
Если их очень много, тогда, наверное, стоит обратить внимание на XPath и делать программно.
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39047414
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А че, нельзя типа такого:

<gimbal_strategy id="1">
<gimbal_strategy id="2">
...
<gimbal_strategy id="N">
...
Рейтинг: 0 / 0
c# XML Deserialize
    #39047647
bdm77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79А че, нельзя типа такого:

<gimbal_strategy id="1">
<gimbal_strategy id="2">
...
<gimbal_strategy id="N">

Нет, я использую файл, который читает другая программа..
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / c# XML Deserialize
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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