Проблема с экранированным символом в IQXML

Программы на Clarion, шаблоны, библиотеки и пр.

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
harry
Бывалый
Сообщения: 69
Зарегистрирован: 24 Февраль 2015, 14:16
Поблагодарили: 3 раза

Проблема с экранированным символом в IQXML

Сообщение harry »

Наткнулся на некорректную работу парсера , при наличии в тексте экранированного символа &lt; (<)
Есть такой фрагмент XML

Код: Выделить всё

<СведТов КолТов="2" НаимТов="Присыпка детская 30г календула" НалСт="20%" НомСтр="15" ОКЕИ_Тов="796" СтТовБезНДС="31.38" СтТовУчНал="37.66" ЦенаТов="15.69">
				<ИнфПолФХЖ2 Значен="01.08.2027" Идентиф="GDATE"/>
				<ИнфПолФХЖ2 Значен="0" Идентиф="GNVLS"/>
				<ИнфПолФХЖ2 Значен="&lt;>" Идентиф="SERTORG"/>
				<ИнфПолФХЖ2 Значен="Сертификат соответствия" Идентиф="SERTTIP"/>
			</СведТов>
и такой код на кларионе

Код: Выделить всё

      
      IF  ~xml:FindNextNode('СведТов','ИнфПолФХЖ2')
         Ret# = Xml:loadQueue(AdditionalInfos,0,1)
      end

На выходе, в очередь AdditionalInfos заливаются первые 3 строки ИнфПолФХЖ2 , т.е. встретив экранированный символ, парсер дальше не идет

Никто не сталкивался ? Как то лечится ?
Последний раз редактировалось harry 21 Сентябрь 2023, 22:40, всего редактировалось 1 раз.
kreator
✯ Ветеран ✯
Сообщения: 4984
Зарегистрирован: 28 Май 2009, 15:54
Откуда: Москва
Благодарил (а): 7 раз
Поблагодарили: 20 раз

Проблема с экранированныи символом в IQXML

Сообщение kreator »

We are hard at work… for you. :)
harry
Бывалый
Сообщения: 69
Зарегистрирован: 24 Февраль 2015, 14:16
Поблагодарили: 3 раза

Проблема с экранированныи символом в IQXML

Сообщение harry »

viewtopic.php?p=43548#p43548.
Не понял, что именно имелось в виду. Переход на другой парсер ?

Только мне подумалось, а корректен ли такой XML ? Символ ">" - тоже , наверно, должен быть экранирован ?
И в таком виде все работает

Код: Выделить всё

<ИнфПолФХЖ2 Значен="&lt;&gt;" Идентиф="SERTORG"/>
Аватара пользователя
Admin
Администратор
Сообщения: 3960
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Проблема с экранированным символом в IQXML

Сообщение Admin »

harry писал(а): 21 Сентябрь 2023, 22:29 Переход на другой парсер ?
Да. Если будете продолжать работать с Clarion запланируйте переход на другой парсер/генератор XML
По текущей проблеме, как вариант предварительно загрузить XML как текст и поменять проблемные места на пробел. Если важны символы то менять на что то типа @@LT @@GT потом парсить в iQxml и возвращать @@LT @@GT обратно в нормальные символы.
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с экранированным символом в IQXML

Сообщение Игорь Столяров »

harry писал(а): 21 Сентябрь 2023, 20:37 <ИнфПолФХЖ2 Значен="&lt;>" Идентиф="SERTORG"/>
Не уверен в существовании проблемы.
Добавил Вашу строку в пример парсера tXML (просто субклассинг штатного парсера) для разбора пакета ЭДО и выполнил прогон.
Всё штатно - работает, никаких сбоев или прерываний работы парсера я не наблюдаю ...

P/S: Но нужно смотреть - возможно используется другой способ распарса вложенных списков.

1.jpg
1.jpg (12.51 КБ) 1123 просмотра
Последний раз редактировалось Игорь Столяров 23 Сентябрь 2023, 20:22, всего редактировалось 1 раз.
За теми кто отстал - не возвращаться. (С) Кодекс
harry
Бывалый
Сообщения: 69
Зарегистрирован: 24 Февраль 2015, 14:16
Поблагодарили: 3 раза

Проблема с экранированным символом в IQXML

Сообщение harry »

Значит, все таки это проблема конкретного парсера IQXML. Однако, странно почему символ «<« экранирован, а «>» нет, но это уже другой вопрос 😀
Кстати, саму эту строку у меня тоже парсит, но не переходит к следующей (из исходного примера). У Вас переходит?
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с экранированным символом в IQXML

Сообщение Игорь Столяров »

harry писал(а): 23 Сентябрь 2023, 20:18У Вас переходит?
Игорь Столяров писал(а): 23 Сентябрь 2023, 20:06 Всё штатно - работает, никаких сбоев или прерываний работы парсера я не наблюдаю ...
P/S: Но нужно смотреть - возможно используется другой способ распарса вложенных списков
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7379
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Проблема с экранированным символом в IQXML

Сообщение Игорь Столяров »

harry писал(а): 23 Сентябрь 2023, 20:18 Однако, странно почему символ «<« экранирован, а «>» нет
Я проверил в Microsoft EDGE и XML Notepad - указанная Вами строка является корректной и везде правильно парсится.
В т.ч. и штатным парсером. Насчёт iqXML - попробуйте обратится к автору, в своё время он мне крови попил изрядно. :)
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3134
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 10 раз
Поблагодарили: 28 раз
Контактная информация:

Проблема с экранированным символом в IQXML

Сообщение Дед Пахом »

Игорь Столяров писал(а): 23 Сентябрь 2023, 20:28 Насчёт iqXML - попробуйте обратится к автору
Он лет 10 как свалил в закат, в хорошем смысле.
С уважением, ДП
Ответить