Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Чтение CDATA в xml  (Прочитано 13106 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« : 20-07-2011 19:42 » 

Добрый вечер уважаемые!!!. подскажите пожалуйста с такой проблемой.как правильно считать секцию cdata в хмлке с помошью чтениеxml
Код:
пока чтение.прочитать() цикл
если Чтение.ИмяУзла="trend" И Чтение.ТипУзла=ТипУзлаXML.Текст И Чтение.ЗначениеАтрибута("sota")="mega" тогда
Сообщить("Наименование "+Чтение.Значение);
КонецЕсли;
конеццикла;
« Последнее редактирование: 21-07-2011 12:05 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 21-07-2011 08:26 » 

Ну а что не так в коде?
Пример файла прикрепи....
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #2 : 21-07-2011 11:29 » 

Код:
//
<trend sota="mega">
<![CDATA[Текст]]></trend>
//
по циклу он проходит мимо
и еще такой вопрос можно ли в 1с сгенерировать guid каким то образом?
извиняюсь плохо искал уникальныйидентификатор )))

Добавлено через 1 минуту и 30 секунд:
Kivals, подскажи плизз. как ее прочесть?
« Последнее редактирование: 21-07-2011 14:28 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 21-07-2011 15:42 » 

Пройдись отладчиком по коду - ИМХО у тебя <![CDATA[Текст]]> это отдельный узел получается и все 3 условия одновременно не выполняются.
Сделай так:
Код:
Пока Чтение.Прочитать() Цикл
Сообщить("ИмяУзла:"+Чтение.ИмяУзла+", ТипУзла:"+Чтение.ТипУзла+", ЗначениеАтрибута:"+Чтение.ЗначениеАтрибута("sota"));
Если Чтение.ИмяУзла="trend" И Чтение.ТипУзла=ТипУзлаXML.Текст И Чтение.ЗначениеАтрибута("sota")="mega" Тогда
Сообщить("Наименование "+Чтение.Значение);
КонецЕсли;
КонецЦикла;
Записан
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #4 : 21-07-2011 16:24 » 

Логично - тут в <trend> два текстовых узла.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 22-07-2011 05:49 » 

Kivals, спасибо щас попробую

Добавлено через 36 минут и 52 секунды:
Kivals, попробовал действительно. первые узлы соответсвуют началу элемента. А как мне вовнутрь попадать?
м.б так?
Код:

Если Чтение.ИмяУзла="trend" И Чтение.ТипУзла=ТипУзлаXML.НачалоЭлемента И Чтение.ЗначениеАтрибута("sota")="mega" Тогда
флаг=1;
КонецЕсли;

Если флаг=1 и Чтение.ТипУзла=ТипУзлаXML.Текст тогда
Сообщить(Чтение.Значение);
КонецЕсли;

Так тоже не отрабатывает подскажите в какую сторону копать? он так все тексты показывает какие есть
« Последнее редактирование: 22-07-2011 06:26 от Элексир » Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #6 : 22-07-2011 06:37 » 

Где результат вывода "Сообщить();" ?

Цитата
... он так все тексты показывает какие есть
Потому что ты не сбрасываешь флаг. По какому-то условию у тебя флаг должен быть сброшен.
Самое простое (но не самое верное) - сразу после чтения текста, т.е.
Код:
Если флаг=1 и Чтение.ТипУзла=ТипУзлаXML.Текст тогда
    флаг = 0;
    Сообщить(Чтение.Значение);
КонецЕсли;
Записан
Элексир
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 22-07-2011 07:03 » new

Kivals, спасибо все работает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines