Страница 1 из 1
					
				Проблема с экранированным символом в IQXML
				Добавлено: 21 Сентябрь 2023, 20:37
				 harry
				Наткнулся на некорректную работу парсера , при наличии в тексте экранированного символа < (<) 
Есть такой фрагмент XML
Код: Выделить всё
<СведТов КолТов="2" НаимТов="Присыпка детская 30г календула" НалСт="20%" НомСтр="15" ОКЕИ_Тов="796" СтТовБезНДС="31.38" СтТовУчНал="37.66" ЦенаТов="15.69">
				<ИнфПолФХЖ2 Значен="01.08.2027" Идентиф="GDATE"/>
				<ИнфПолФХЖ2 Значен="0" Идентиф="GNVLS"/>
				<ИнфПолФХЖ2 Значен="<>" Идентиф="SERTORG"/>
				<ИнфПолФХЖ2 Значен="Сертификат соответствия" Идентиф="SERTTIP"/>
			</СведТов>
и такой код на кларионе
Код: Выделить всё
      
      IF  ~xml:FindNextNode('СведТов','ИнфПолФХЖ2')
         Ret# = Xml:loadQueue(AdditionalInfos,0,1)
      end
     
На выходе, в очередь AdditionalInfos заливаются первые 3 строки ИнфПолФХЖ2 , т.е. встретив экранированный символ, парсер дальше не идет
Никто не сталкивался ? Как то лечится ?
 
			 
			
					
				Проблема с экранированныи символом в IQXML
				Добавлено: 21 Сентябрь 2023, 21:43
				 kreator
				
			 
			
					
				Проблема с экранированныи символом в IQXML
				Добавлено: 21 Сентябрь 2023, 22:29
				 harry
				viewtopic.php?p=43548#p43548.
Не понял, что именно имелось  в виду. Переход на другой парсер ?
Только мне подумалось, а корректен ли такой XML ? Символ ">" - тоже , наверно, должен быть экранирован ?
И в таком виде все работает
Код: Выделить всё
<ИнфПолФХЖ2 Значен="<>" Идентиф="SERTORG"/>
 
			 
			
					
				Проблема с экранированным символом в IQXML
				Добавлено: 22 Сентябрь 2023, 2:33
				 Admin
				harry писал(а): 21 Сентябрь 2023, 22:29
Переход на другой парсер ?
 
Да. Если будете продолжать работать с Clarion запланируйте переход на другой парсер/генератор XML
По текущей проблеме, как вариант предварительно загрузить XML как текст и поменять проблемные места на пробел. Если важны символы то менять на что то типа @@LT @@GT потом парсить в iQxml и возвращать @@LT @@GT обратно в нормальные символы.
 
			 
			
					
				Проблема с экранированным символом в IQXML
				Добавлено: 23 Сентябрь 2023, 20:06
				 Игорь Столяров
				harry писал(а): 21 Сентябрь 2023, 20:37
<ИнфПолФХЖ2 Значен="<>" Идентиф="SERTORG"/>
 
Не уверен в существовании проблемы.
Добавил Вашу строку в пример парсера tXML (просто субклассинг штатного парсера) для разбора пакета ЭДО и выполнил прогон.
Всё штатно - работает, никаких сбоев или прерываний работы парсера я не наблюдаю ...
P/S: Но нужно смотреть - возможно используется другой способ распарса вложенных списков.
			
		
				
			
 
						- 1.jpg (12.51 КБ) 10542 просмотра
 
		
		
		
			  
			 
			
					
				Проблема с экранированным символом в IQXML
				Добавлено: 23 Сентябрь 2023, 20:18
				 harry
				Значит, все таки это проблема конкретного парсера IQXML. Однако, странно почему символ «<« экранирован, а «>» нет, но это уже другой вопрос 

Кстати, саму эту строку у меня тоже парсит, но не переходит к следующей (из исходного примера). У Вас переходит?
 
			 
			
					
				Проблема с экранированным символом в IQXML
				Добавлено: 23 Сентябрь 2023, 20:24
				 Игорь Столяров
				harry писал(а): 23 Сентябрь 2023, 20:18У Вас переходит?
 
Игорь Столяров писал(а): 23 Сентябрь 2023, 20:06
Всё штатно - работает, никаких сбоев или прерываний работы парсера я не наблюдаю ...
P/S: Но нужно смотреть - возможно используется другой способ распарса вложенных списков
 
 
			 
			
					
				Проблема с экранированным символом в IQXML
				Добавлено: 23 Сентябрь 2023, 20:28
				 Игорь Столяров
				harry писал(а): 23 Сентябрь 2023, 20:18
Однако, странно почему символ «<« экранирован, а «>» нет
 
Я проверил в Microsoft EDGE и XML Notepad - указанная Вами строка является корректной и везде правильно парсится.
В т.ч. и штатным парсером. Насчёт iqXML - попробуйте обратится к автору, в своё время он мне крови попил изрядно. 

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