:: Visual Foxpro, Foxpro for DOS
большой xml в excel
axeum

Сообщений: 107
Дата регистрации: 07.07.2020
Добрый день, небольшие xml гружу через такой код и все отлично
LcFileXml = 'E:\загрузки\54\AS_HOUSES_20240201_e6cae316-20ca-4ea1-b062-593019a82b0b.xml'
adapter = CREATEOBJECT("XMLAdapter")
adapter.XMLSchemaLocation='E:\загрузки\AS_HOUSES_2_251_08_04_01_01.xsd'
adapter.LoadXML(lcFileXml,.t.)
adapter.tables(1).ToCursor()
но появилась xml размером в 1,2гб и через этот же код уже не получается подгрузить
пробовал эту большую xml грузить в эксель а оттуда уже в дбф но и эксель не осилил такую xml
в интернете пробовал конверторы разные, результат тот же самый, на форуме искал но подходящего решения к моей проблеме не нашел
и собсно вопрос, как еще можно попробовать получить из этой xml дбф?



Исправлено 1 раз(а). Последнее : axeum, 25.03.24 13:15
Ratings: 0 negative/0 positive
Re: большой xml в excel
kornienko_ru

Сообщений: 237
Откуда: Владивосток
Дата регистрации: 06.09.2015
Я не использовал XMLAdapter объект. Но могу подсказать, что еще есть LibreOffice и он всегда грузил и открывал файлы большего размера, чем Excel. Я генератор отчетов сделал на LibreOffice.
Но у него своя объектная модель. Открывается так:
oSM=CreateO("com.sun.star.ServiceManager")
if type('m.oSM')='O'
oOO= oSM.createInstance("com.sun.star.frame.Desktop")
endi



Исправлено 2 раз(а). Последнее : kornienko_ru, 25.03.24 14:34
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
axeum
как еще можно попробовать получить из этой xml дбф?
Если задача разовая, то разбивайте этот XML на части подходящего для стандартного приема размера.
Выходные DBF объедините в один.

Могу сам попробовать, если пришлете исходный XML.
Ratings: 0 negative/0 positive
Re: большой xml в excel
axeum

Сообщений: 107
Дата регистрации: 07.07.2020
kornienko_ru
Я не использовал XMLAdapter объект. Но могу подсказать, что еще есть LibreOffice и он всегда грузил и открывал файлы большего размера, чем Excel. Я генератор отчетов сделал на LibreOffice.
Но у него своя объектная модель. Открывается так:
oSM=CreateO("com.sun.star.ServiceManager")
if type('m.oSM')='O'
oOO= oSM.createInstance("com.sun.star.frame.Desktop")
endi
а как его сделать видимым? нашел какое то подобие через .activate но ничего не получилось
и как открыть либрой как экселем с нормальным разделением по колонкам/строкам? максимум что смог получить все в одной строке

akvvohinc
axeum
как еще можно попробовать получить из этой xml дбф?
Если задача разовая, то разбивайте этот XML на части подходящего для стандартного приема размера.
Выходные DBF объедините в один.

Могу сам попробовать, если пришлете исходный XML.
ну не совсем разовая раз в несколько месяцев/полгода/год надо будет этим заморачиваться чтобы коды фиаса обновлять, поэтому каждый раз кому то писать чтобы разобрали за меня дело такое себе



Исправлено 1 раз(а). Последнее : axeum, 25.03.24 17:28
Ratings: 0 negative/0 positive
Re: большой xml в excel
alex;

Сообщений: 2977
Откуда: Москва
Дата регистрации: 23.11.2004
Вот пример загрузки xml с пом. MSXML2.DOMDocument
kodu.neti.ee
Ratings: 0 negative/0 positive
Re: большой xml в excel
kornienko_ru

Сообщений: 237
Откуда: Владивосток
Дата регистрации: 06.09.2015
[quote axeum][quote kornienko_ru]Открывается так:
oSM=CreateO("com.sun.star.ServiceManager")
if type('m.oSM')='O'
oOO= oSM.createInstance("com.sun.star.frame.Desktop")
endi
[/quote]
а как его сделать видимым? нашел какое то подобие через .activate но ничего не получилось
и как открыть либрой как экселем с нормальным разделением по колонкам/строкам? максимум что смог получить все в одной строке

Глянул свой генератор. Открытие:
* Открыть файл
oPV = oSM.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
oPV.Name = "Hidden" && возможные опции: wiki.openoffice.org
oPV.Value = .t.
args(1) = oPV
* oDoc=oOO.loadComponentFromURL("private:factory/scalc", "_blank", 0, @args)
oDoc=oOO.loadComponentFromURL("file:///"+CHRTRAN(m.cN,"\","/"),"_blank",0,@args)
oDoc.setActionLocks(1) && заблокировать автоматические вычисления
oWin=oDoc.currentController.Frame.ContainerWindow
oWin.IsMinimized=.t. && минимизировать
oWin.setVisible(.t.) && сделать видимым
m.cN — это имя scalc-файла вместе с путем
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
axeum
ну не совсем разовая раз в несколько месяцев/полгода/год надо будет этим заморачиваться чтобы коды фиаса обновлять
Раз этот XML стандартный, структура которого известна и не будет постоянно меняться, то разбивать его на части необязательно вручную - напишите ветку к основной программе приема, которая и будет это делать для файлов, размером более заданного.
На мой взгляд, задача совершенно несложная.
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
alex;
Вот пример загрузки xml с пом. MSXML2.DOMDocument
Слабо верится, что всем и всегда будет хватать оперативки на файлы такого размера.

У меня сейчас 16Gb.
Иногда удается прочитать файл размером около 1Gb функцией FILETOSTR(), а сейчас проверил - даже файл 800M вывалился по Not enough memory.
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
но появилась xml размером в 1,2гб и через этот же код уже не получается подгрузить
пробовал эту большую xml грузить в эксель а оттуда уже в дбф но и эксель не осилил такую xml
в интернете пробовал конверторы разные, результат тот же самый, на форуме искал но подходящего решения к моей проблеме не нашел
В чем причина этого "не получается"?
Видимо, в нехватке оперативной памяти.
И если это так, то все "конвертеры", пытающиеся "проглотить" файл целиком в ОП, обречены.
Ratings: 0 negative/0 positive
Re: большой xml в excel
of63
Автор

Сообщений: 25421
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Да, обречены.
Только "потэговое" (поточное) чтение. SAX-технология, ещё от ИК, он показал штатные средства библиотеки MSXML, не понравилось, или я не понял)

() Я доморощеным поточным читателем пользуюсь, за что и был отруган ИК, где-то он прав, но я получил опыт такого чтения (буферизация в ограниченной памяти, поиск разделителей, граничные события в конце буфера... и просто удовольствие пописать с нуля)

Но это поточное чтение тэгов геморно изрядно - вы сами будете отслеживать вложенность тэгов, повторяющиеся тэги... попробуйте

Непонятно, что МС не реагирует, с этой идеей "весь XML-файл в ООП, ой, точнее, в виде DOM", ну, применили бы свои технологии, и при помощи НЖМД, разместили бы свой офигенно большой и страшно необходимый обьем памяти в модели DOM, в 2Г памяти 32-битного приложения... Криворукие.

> Иногда удается прочитать файл размером около 1Gb функцией FILETOSTR(), а сейчас проверил - даже файл 800M вывалился по Not enough memory.
16 Мбайт почему-то запомнил для себя границей на FILEFROMSTR (не FILETO...), может, в API граница, может во внутренностях фокса, хз, но после нескольких 10-ков Мбайт м.будут проблы... !Гбайт - это редконевсегдарельно сработает



Исправлено 4 раз(а). Последнее : of63, 25.03.24 19:50
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
16 Мбайт почему-то запомнил для себя границей на FILEFROMSTR (не FILETO...), может, в API граница, может во внутренностях фокса, хз, но после нескольких 10-ков Мбайт м.будут проблы... !Гбайт - это редконевсегдарельно сработает
Уже много раз обсуждали - для каких-то операций со строками действует ограничение в 16Mb, описанное в Help, но для большинства - ограничение связано только с наличием свободной оперативки.

of63
Но это поточное чтение тэгов геморно изрядно - вы сами будете отслеживать вложенность тэгов, повторяющиеся тэги...
В данном случае не требуется универсальности - это один из файлов ФИАС достаточно простой известной структуры - его несложно бить на части, сохраняя начальные и конечные теги и последовательно меняя только середину.
Ratings: 0 negative/0 positive
Re: большой xml в excel
of63
Автор

Сообщений: 25421
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Тоже с ГАР (ФИАС забудь, хотя там немного разниц) е... работаю

...бия на части?... ну скажи результат, там некоторые регионы бошльшие 2Г, ты их просто фоксом FOPEN и пр. F* не прочитаешь
Ratings: 0 negative/0 positive
Re: большой xml в excel
of63
Автор

Сообщений: 25421
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Юра, и PRG >100 кБайт размером не грузит на твой(наш) сайт - 117кБ незипованный, мне сайт дал отказ... ну защипую...
... зачем установлено ограничение?, тексты прог же бесконечны.
я зазипую, но потеряется милая покраска фокс кода...

Надо меняться, но не как наши некоторые соотечественники, а в разумном векторе, разумность определит выборный царь, конечно )

Доб. В технике меняться, живее усложнять технику...

зае..ло нативное отношение к ЯП "Фокс", фокс - обычный ЯП, Фокс как и все остальные ЯП высокого уровня, ничего особенного (кроме наших фишек математических, +БД забесплатно до 2Гбайт)



Исправлено 3 раз(а). Последнее : of63, 25.03.24 22:55
Ratings: 0 negative/0 positive
Re: большой xml в excel
of63
Автор

Сообщений: 25421
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Про ГАР скажу что понял, мне понравилась эта структура. Я ее спрятал (мне нужные детали, позволяюшие выдать по некоторому коду полный тексотвый "адрес", адм, и другой... забылл) из 0.5Гбайт
Ratings: 0 negative/0 positive
Re: большой xml в excel
akvvohinc

Сообщений: 4261
Откуда: Москва
Дата регистрации: 11.11.2008
Цитата:
ну скажи результат, там некоторые регионы больше 2Г, ты их просто фоксом FOPEN и пр. F* не прочитаешь
Тема не об ограничениях Фокса - они известны.
Проблема случилась с файлом допустимого размера, который можно прочитать функциями низкого уровня.
Ratings: 0 negative/0 positive
Re: большой xml в excel
axeum

Сообщений: 107
Дата регистрации: 07.07.2020
akvvohinc
Цитата:
но появилась xml размером в 1,2гб и через этот же код уже не получается подгрузить
пробовал эту большую xml грузить в эксель а оттуда уже в дбф но и эксель не осилил такую xml
в интернете пробовал конверторы разные, результат тот же самый, на форуме искал но подходящего решения к моей проблеме не нашел
В чем причина этого "не получается"?
Видимо, в нехватке оперативной памяти.
И если это так, то все "конвертеры", пытающиеся "проглотить" файл целиком в ОП, обречены.
да все верно, Недостаточно ресурсов памяти для завершения операции
вот на этой строке выдает adapter.LoadXML(cFile,.t.) 8 гигов оперативы не хватает, надо было дома попробовать там толи 32 толи 64 стоят
а и еще забыл, пробовал через xmltocursor('AS_HOUSES_PARAMS_20240201_1cff3120-037c-4e99-9a97-0f093fca3a73.xml') выдает ошибку
Ошибка в элементе верхнего уровня документа, line 1, position 1



Исправлено 1 раз(а). Последнее : axeum, 26.03.24 07:33
Ratings: 0 negative/0 positive
Re: большой xml в excel
pasha_usue

Сообщений: 3664
Откуда: Е-бург
Дата регистрации: 06.10.2006
axeum
да все верно, Недостаточно ресурсов памяти для завершения операции
вот на этой строке выдает adapter.LoadXML(cFile,.t.) 8 гигов оперативы не хватает, надо было дома попробовать там толи 32 толи 64 стоят
а и еще забыл, пробовал через xmltocursor('AS_HOUSES_PARAMS_20240201_1cff3120-037c-4e99-9a97-0f093fca3a73.xml') выдает ошибку
Ошибка в элементе верхнего уровня документа, line 1, position 1
Да не важно, сколько оперативки запихано в машину. Больше 2-х гигов на 32-разрядное приложение ОСь не выдаст.
Ratings: 0 negative/0 positive
Re: большой xml в excel
axeum

Сообщений: 107
Дата регистрации: 07.07.2020
of63
Про ГАР скажу что понял, мне понравилась эта структура. Я ее спрятал (мне нужные детали, позволяюшие выдать по некоторому коду полный тексотвый "адрес", адм, и другой... забылл) из 0.5Гбайт
я скрин прикрепил, может мне этот файл на 1,2г вообще не нужен? я пока не совсем понимаю что из всего этого мне действительно надо чтобы сделать таблицы по которым буду искать код дома в фиасе
Ratings: 0 negative/0 positive
Re: большой xml в excel
of63
Автор

Сообщений: 25421
Откуда: Н.Новгород
Дата регистрации: 13.02.2008
Я сказал, что механизмом чтения XML-ей SAX.
Если файл тривиальный, то сумеешь тектовым разбором. Для размера 1.2Г хватит и FOPEN. Для файлов >2Г фоксом не откроешь (точнее он откроется, но ты его не прочитаешь), читать его можно при помощи API...

() Только что придумал, что надо что нибудь придумать! ) Например, есть SQL-базы, они умеют читать файлы XML, загрузи это XML>2Г в SQL, а потом уж выгрузи из него (их SQL) что-то нужное (в ГАР/ФИАС много "ненужного" в жизни, например, история, всякое другое, увидишь, когда прочитаешь)

() что уж такая беспомощность-то.. и интернет в помочах, и здесь талдычили-талдычили про этот несчастны наш фокс...



Исправлено 1 раз(а). Последнее : of63, 12.04.24 18:34
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 16 (Гостей: 16)

© 2000-2024 Fox Club 
Яндекс.Метрика