powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ2XML
7 сообщений из 7, страница 1 из 1
LINQ2XML
    #39500182
Евгенич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Пытаюсь вставить новый узел в созданный xml (с неймспейсами). Возникает ошибка, думаю что не находит узел rev:MessageData. Что делаю не так? Спасибо заранее!

Код: 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.
//нэймспейсы
        public readonly XNamespace SE = "http://schemas.xmlsoap.org/soap/envelope/";
        public readonly XNamespace wsu = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
        public readonly XNamespace rev = "http://smev.gosuslugi.ru/rev120315";

		String action = "import"
		
doc =
                new XElement(SE + "Envelope"
                                , new XAttribute(XNamespace.Xmlns + "SE", "http://schemas.xmlsoap.org/soap/envelope/")
                                , new XAttribute(XNamespace.Xmlns + "wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd")
                                , new XAttribute(XNamespace.Xmlns + "rev", "http://smev.gosuslugi.ru/rev120315")
                                , new XElement(SE + "Body", new XAttribute(wsu + "Id", "body")
                                      , new XElement(rev + action, new XElement(rev + "Message"
                                                                    , new XElement(rev+"Sender"
                                                                        , new XElement(rev+"Code", "???mnem_point???")
                                                                        , new XElement(rev+"Name", "ГИС клиент")
                                                                                  )
                                                                    , new XElement(rev+"Recipient"
                                                                        , new XElement(rev+"Code", "MNSV10001")
                                                                        , new XElement(rev+"Name", "Минкомсвязь РФ")
                                                                                  )
                                                                    , new XElement(rev + "ServiceName", "MNSV10KOSVED")
                                                                    , new XElement(rev + "TypeCode", "GFNC")
                                                                    , new XElement(rev + "Status", status)
                                                                    , new XElement(rev + "Date", DateTime.UtcNow)
                                                                    , new XElement(rev + "ExchangeType", "2")
                                                                           )
                                                           , new XElement(rev + "MessageData"
                                                                           )
                                                    )

                            
                                              )
                            );

//пытаюсь вставить новый узел (нужно именно так, потому что это один из вариантов switch, все не стал описывать)
//здесь ошибка "Object reference not set to an instancef an object"
try
{
	doc.Element(rev + "MessageData").Add(new XElement(action
																		   , new XElement(rev + "payment-organization-guid", "???gis???")
																		   )
															  );

}
catch (Exception e)
{
	MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
...
Рейтинг: 0 / 0
LINQ2XML
    #39500289
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
LINQ2XML
    #39500584
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
doc.Element(rev + "MessageData")

вот этот элемент XLinq не находит, т.к. rev + "MessageData" - не прямой дочерний элемент doc и его надо искать либо через Descendants, либо по одному Element, погружаясь внутрь дерева:
Код: c#
1.
doc.Element(SE + "Body").Element(rev + "MessageData").Add(new XElement...то что вам надо вставить).
...
Рейтинг: 0 / 0
LINQ2XML
    #39501715
Евгенич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Пытаюсь вставить новый узел в созданный xml (с неймспейсами). Возникает ошибка, думаю что не находит узел rev:MessageData. Что делаю не так? Спасибо заранее!

Код: 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.
//нэймспейсы
public readonly XNamespace SE = "http://schemas.xmlsoap.org/soap/envelope/";
public readonly XNamespace wsu = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd";
public readonly XNamespace rev = "http://smev.gosuslugi.ru/rev120315";

String action = "import"

doc =
new XElement(SE + "Envelope"
, new XAttribute(XNamespace.Xmlns + "SE", "http://schemas.xmlsoap.org/soap/envelope/")
, new XAttribute(XNamespace.Xmlns + "wsu", "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd")
, new XAttribute(XNamespace.Xmlns + "rev", "http://smev.gosuslugi.ru/rev120315")
, new XElement(SE + "Body", new XAttribute(wsu + "Id", "body")
, new XElement(rev + action, new XElement(rev + "Message"
, new XElement(rev+"Sender"
, new XElement(rev+"Code", "???mnem_point???")
, new XElement(rev+"Name", "ГИС клиент")
)
, new XElement(rev+"Recipient"
, new XElement(rev+"Code", "MNSV10001")
, new XElement(rev+"Name", "Минкомсвязь РФ")
)
, new XElement(rev + "ServiceName", "MNSV10KOSVED")
, new XElement(rev + "TypeCode", "GFNC")
, new XElement(rev + "Status", status)
, new XElement(rev + "Date", DateTime.UtcNow)
, new XElement(rev + "ExchangeType", "2")
)
, new XElement(rev + "MessageData"
)
)


)
);

//пытаюсь вставить новый узел (нужно именно так, потому что это один из вариантов switch, все не стал описывать)
//здесь ошибка "Object reference not set to an instancef an object"
try
{
doc.Element(rev + "MessageData").Add(new XElement(action
, new XElement(rev + "payment-organization-guid", "???gis???")
)
);

}
catch (Exception e)
{
MessageBox.Show(e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
} 
...
Рейтинг: 0 / 0
LINQ2XML
    #39501729
Евгенич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured, спасибо.
А не подскажете как через Descendants сделать?
...
Рейтинг: 0 / 0
LINQ2XML
    #39502015
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
doc.Descendants(rev + "MessageData").First().Add(...



Вроде бы так. Descendants возвращает массив потомков.
...
Рейтинг: 0 / 0
LINQ2XML
    #39503513
Евгенич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bured, Спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / LINQ2XML
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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