Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Добрый день коллеги!
Кто нибудь уже решал (решил) задачу импорта больничных листов их XML - файлов в Fox-е? Там вроде ничего сложного, но что делать с
Исправлено 2 раз(а). Последнее : FoxShip, 12.04.18 12:35 |
Re: Импорт больничных листов их XML - файла. | |
---|---|
ssa Сообщений: 13007 Откуда: Москва Дата регистрации: 23.03.2005 |
А почему решил, что с этим таки надо что-то делать? ------------------ Лень - это неосознанная мудрость. |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Не пробовал конечно, но почему то решил, что файловые функции низкого уровня не поймут исходный файла в кодировке UTF-8 в программе работающей с Win1251.
Может я чего то недопер? |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
STRCONV(<строка>,9) подойдет?
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
полагаю STRCONV(..., 11)
Исправлено 1 раз(а). Последнее : AndyNigmatec, 12.04.18 13:08 |
Re: Импорт больничных листов их XML - файла. | |
---|---|
Crispy Сообщений: 18571 Дата регистрации: 16.05.2005 |
На "низком уровне" по сути нет "кодировки". Т.е. считывается например строка байтов. С которой можно делать почти что хочешь. Перекодировка же нужна только уже при работе с данными этой строки в самом Фокспро. Кстати не обязательно использовать в таких случаях обязательно считывание на низком уровне. Особенно, если в файле XML нет разбивки по строкам. Можно например использовать FILETOSTR() для считывания целиком в переменную. Далее остается только написать свою разборку по тэгам - для вытаскивания нужной информации из них. Для чего открыть параллельно с фоксом XML в любом подходящем редакторе, ну или хотя бы в окне просмотра через браузер IE, и зная из вида формы той программы, откуда взят XML - где что находится, найти внутри каких открывающих-закрывающих тэгов что расположено. Ну и написать соответствие. Также есть и еще более простой способ, который я применял еще в FPD. Т.к. в XML не было разделителей строк, вначале пропускал через блок функций низкого уровня, считывал все данные в новый текстовый файл, заменяя все сочетания "><" на ">"+CHR(10)+CHR(13)+"<". После чего создавал временную таблицу с символьным полем длиной 254. И через APPEND FROM SDF - добавлял текстовый файл. Получалась очень легко обрабатываемая таблица, в каждой строке которой данные конкретных тэгов. Ну далее использовал самописный перекодировщик для UTF-8 - ASCII. В VFP разумеется есть готовая функция. После чего пользователь правил что надо или распечатывал. А при необходимости, было дело, даже экспортировал снова в XML (ну потом это уже стало не нужным). Т.е., главное считать, а дальше уже можно, переконвертировав, делать все, что нужно. ------------------ В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
Re: Импорт больничных листов их XML - файла. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Я с xml считывал (по образцу с форума кстати) через
особых тормозов не заметил ... 2-5 тыс.записей таким образом забирал - единицы секунд занимало, но ежели таких импортов 100500 - то вопрос производительности встанет думаю |
Re: Импорт больничных листов их XML - файла. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Ничего не делать. Если данные в файле ДЕЙСТВИТЕЛЬНО в кодировке UTF8, адекватный парсер без проблем их прочитает и правильно раскодирует. Тот же Msxml2.DOMDocument всё сам адекватно раскодирует - и UTF8 и всякие кавычки, амперсанты, угловые скобки... Чтобы в текстах были символы, а не всякие > Если структура достаточно простая и не шибко вложено-вложенная, то можно даже настроить XMLAdapter для автоматизированного получения курсоров из такого файла. Примеров на форуме хватает. Конечно же если идти по пути криспы и делать свой самодельный парсер - хоть на FREAD хоть на FILETOSTR или APPEND MEMO то это будет ТВОЯ головная боль - все эти кодировки, entities, корректный разбор самой структуры - где тег, где атрибут, где CDATA, namespace те же... Потому так делать я крайне не рекомендую. Если эти файлы будут реально гигантскими (размером в десятки Мб), то вместо DOM парсера придётся применять SAX вариант. DOM грузит всё содержимое XML в память, при том в "разборанном" виде - как куча объектов с не меньшей кучей свойств - потому ему банально не будет хватать памяти для обработки гигантских XML-ей. SAX парсер - по сути это "читальщик" содержимого, генерирующий специальные "события" как только в процессе чтения происходит то или иное изменение контекста - вход в элемент, выход из него, чтение атрибута, чтение содержимого и т.д. Работа в таком режиме весьма своеобразна, зато не будет проблем даже с терабайтными файлами ------------------ WBR, Igor |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Спасибо что поставили на путь истинный.
Исправлено 2 раз(а). Последнее : FoxShip, 12.04.18 14:41 |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Попытался получить с помощью XMLAdapter сразу при чтении файла вылетела ошибка.
Он без XSD видимо не работает. А XSD у меня нет. Придется разбирать Msxml2.DOMDocument. Но что-то примеров пока не могу. |
Re: Импорт больничных листов их XML - файла. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
Ну вот буквально недавно как примерчик forum.foxclub.ru
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
По ссылке дан пример
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
AndyNigmatec Сообщений: 1573 Откуда: Волгоград Дата регистрации: 28.06.2015 |
я лично там по ссылке выкладывал 100% работающий пример ... не скажу что по феншую сделан - но рабочий )))
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Ок! Поехали!
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Все прекрасно работает - спасибо всем!
|
Re: Импорт больничных листов их XML - файла. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Он далеко и не со всякой схемой XSD сможет САМ разборать иерархический по сути XML в "плоские" курсоры. "Вручную" создавая нужные XMLTables/XMLFields и прописывая им свойства можно разбирать уже гораздо большее разнообразие xml документов - но тоже далеко не все... ------------------ WBR, Igor |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
У меня простая схема. Больничные - куда уж проще?
Обошелся с MSXML2.DOMDocument. Все закачалось. Попробовал сначала программу Advanced XML Converter. Не понравилось. Все заливает в один файл (dbf, xls, ...), хотя, если нет желания разбираться с MSXML2.DOMDocument или XMLAdapter, вполне можно воспользоваться. В каком то проекте я уже делал так. Решил все же разобраться с MSXML2.DOMDocument. Для моих нужд оказалось проще чем я думал. Исправлено 1 раз(а). Последнее : FoxShip, 14.04.18 08:36 |
Re: Импорт больничных листов их XML - файла. | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Поскольку примера этого самого больничного-xml приведено не было, судить о том "проще некуда" он, или достаточно неудобный для фокса (не "табличный" документ) - невозможно. Равно как и посоветовать тот или иной подход к его разбору. Т.к. XMLAdapter проще в одних случаях, а достаточно "многословный" код с циклами по объектам/коллекциям MSXML2.DomDocument - будет лучше в других...
------------------ WBR, Igor |
Re: Импорт больничных листов их XML - файла. | |
---|---|
FoxShip Автор Сообщений: 458 Дата регистрации: 27.06.2007 |
Вы, как всегда, правы.
Но результат, с помощью форума в том числе, достигнут, а на мою "философию" обращать внимания не стоит. Тут люди достаточно грамотные чтобы самим разобраться что и когда применить без моих рассуждений. |
Re: Импорт больничных листов их XML - файла. | |
---|---|
dafni_2004 Сообщений: 89 Дата регистрации: 17.11.2005 |
решение можно в студию?
|
© 2000-2024 Fox Club  |