powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Не работает десериализация XML
3 сообщений из 3, страница 1 из 1
Не работает десериализация XML
    #40031237
Lloret
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
var newXml =@"
<reestr>
	<paymentTransaction xmlns='http://privilege.sbibank.ru/'>
		<tranId>ABCDEF</tranId>
		<tranSum>262</tranSum>
		<tranDate>2016-12-03T11:43:40.907+03:00</tranDate>
	</paymentTransaction>
	<paymentTransaction xmlns='http://privilege.sbibank.ru/'>
		<tranId>ZXCV</tranId>
		<tranSum>234.1</tranSum>
		<tranDate>2016-12-13T11:43:40.907+03:00</tranDate>
	</paymentTransaction>
	<paymentTransaction xmlns='http://privilege.sbibank.ru/'>
		<tranId>BNMF</tranId>
		<tranSum>7262</tranSum>
		<tranDate>2016-12-23T11:43:40.907+03:00</tranDate>
	</paymentTransaction>
</reestr>
";

        [XmlType("paymentTransaction")]
        public class PmtTransaction {
            [XmlElement("tranId")]
            public long TranId { get; set; }
        }

            XmlSerializer ser2 = new XmlSerializer(typeof(List<PmtTransaction>)
               , new XmlRootAttribute("reestr")
                );

            List<PmtTransaction> envelope;
            using (StringReader reader = new StringReader(newXml))
            {
                envelope = (List<PmtTransaction>)ser2.Deserialize(reader);

                return envelope;
            }



В envelope в итоге оказывается список без единой транзакции. Как поменять декларацию транзакции или использование XmlSerializer чтобы вот такой xml превращался в список?
...
Рейтинг: 0 / 0
Не работает десериализация XML
    #40031241
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если
1) убрать неймспейсы
2) поменять тип TranId на правильный
То всё работает

Если неймспейсы нужны, это нужно как-то указать в [XmlType("paymentTransaction")] (уже не помню, давно это было)
...
Рейтинг: 0 / 0
Не работает десериализация XML
    #40031550
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте 1 из этих вариантов, этого достаточно для любых задач
1.
Код: c#
1.
2.
3.
4.
5.
public class Foo
{
    [XmlElement("Bar")]
    public List<Bar> Children {set;get;}
}


В итоге:
Код: xml
1.
2.
3.
4.
5.
<Foo>
    <Bar/>
    <Bar/>
    <Bar/>
</Foo>


2.
Код: c#
1.
2.
3.
4.
5.
public class Foo
{
    [XmlArray("Bars"), XmlArrayItem("Bar")]
    public List<Bar> Children {set;get;}
}


В итоге:
Код: xml
1.
2.
3.
4.
5.
6.
7.
<Foo>
    <Bars>
        <Bar/>
        <Bar/>
        <Bar/>
    </Bars>
</Foo>


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


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