XML по-русски

Clarion, Clarion 7

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

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

XML по-русски

Сообщение Constantine »

Ситуация: С10, АВС.
Нужно импортировать XML-файл с тегами на русском языке. Использую IQXML. Не находит ни одного тега. В файле кодировка Windows-1251.
По-английски - работает...
Как победить?
Спасибо!
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

XML по-русски

Сообщение Yufil »

Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

XML по-русски

Сообщение Constantine »

Спасибо!
Кое-какие функции заработали при указании имен в нижнем регистре (маленькими буквами)... :-) Покопаю в эту сторону.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

XML по-русски

Сообщение Yufil »

Все равно IQXML не лучший вариант. Есть в Кларионе встроенный парсер cpxml.dll, к сожалению, не поддерживающий кириллицу (по крайней мере, в CW6 не работал). Поэтому сначала надо перевести файл в utf-8, а потом парсить.

Правда, есть ещё способ - шестнадцатеричным редактором поправить DLL (делал когда-то) тогда будет работать с кириллицей, но какие-то буквы в тегах не принимаются.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7373
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

XML по-русски

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

Constantine писал(а): 19 Октябрь 2017, 13:48 В файле кодировка Windows-1251.
Если задача рабочая - посмотри EasyXML, насколько помню там с кириллицей проблем нет ...
Если побаловаться или много времени, то можно зайти через конвертацию файла в UTF-8.

Конкретно про iqXML. Продукт сдох. Последняя адекватная версия от 25.05.2016 г., а далее масса проблем.
В своё время долго (2010 - 2014) разбирался с автором по поводу загрузки русских букв, многое тогда удалось сделать ...
Заодно и английский вспомнил. :) И в каждом обновлении, что-то отваливалось ... :(
Сейчас все проекты переписали на ClarionXML, тоже не подарок, но работает адекватно.
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

XML по-русски

Сообщение finsoftrz »

Я разбираю xml через генерацию vbscript, который использует родной ms парсер. При этом создается пара временных файлов (скрипт и результат разбора, который автоматически затягивается в очередь/группу в кларионовской программе). В остальном проблем никаких, в приложении всего вызов одного метода класса, главное задать имена полей в очереди/группе, соответствующие тэгам в xml файле.
C6/C11, ШВС, tps/btrieve.
Yufil
Ветеран движения
Сообщения: 1277
Зарегистрирован: 16 Май 2006, 14:34
Контактная информация:

XML по-русски

Сообщение Yufil »

А если XML имеет сложную иерархическую структуру, содержит секции CDATA, комменты и всё такое ?
В принципе, есть шаблон ViewXML, он грузит XML в очередь и показывает ея на странице.
По этому образцу легко сделать парсинг, ссылки на который привёл выше.
Проблемы две: принимается только UTF-8 и результаты парсинга выводятся в этой же кодировке.
Но и это решаемо.

У меня в обучающих программах в XML хранятся шаблоны экранов, тесты, отчёты о тестировании, сессии (текущий статус), разного рода данные для тестов. XML пишется в Blob, Blob пакуется через Zlib, архив пишется в TPS. И вот там-то и есть смерть Кощеева :)
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4615
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 37 раз

XML по-русски

Сообщение finsoftrz »

Да, в общем, без разницы. MS парсером преобразуем xml в линейную структуру и забираем в кларионовское приложение. Для конкретных сложных ситуаций прописываем метод в классе. А примеры разбора на vbscript находим в интернете, где оно всегда есть. Конечно, не всегда охота использовать временные файлы, но чтобы не бодаться с разными библиотеками в кларионе и нужно быстро найти решение, вариант...
C6/C11, ШВС, tps/btrieve.
Constantine
Активист
Сообщения: 185
Зарегистрирован: 07 Февраль 2017, 16:58

XML по-русски

Сообщение Constantine »

Итак, итоги...
Спасибо всем, все получилось.
Последнюю версию IQXML брал с сайта. Под С10 отработала нормально. С русским языком, на самом деле, все нормально, но есть особенности:
1. Все параметры передаются и возвращаются в нижнем регистре.
2. Поля нумеруются СПРАВА НАЛЕВО.
3. Соответственно, курсор для перемещения по полям нужно УВЕЛИЧИВАТЬ, а не уменьшать. При этом, по документу он будет сдвигаться на одну позицию ВЛЕВО. Т.е., позиционируем курсор на нужный узел, увеличиваем его (+) на количество полей, а затем уменьшаем его на 1 для перемещения по полям.
4. Считать в Queue пока не пробовал, хотя русские имена полей Clarion проглотил, попробую позже. Пользовался xml:FindNextNode/xml:ReadCurrentRecord/XML:SetPointer.

Вывод: для не особо сложных файлов вполне сойдет.
Другие рекомендации обязательно попробую позже и отпишусь.
Еще раз всем СПАСИБО!
Ответить