Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché Новый топик    Ответить
 Ошибка анализатора SAX XML: <STORE>  [new]
drakut
Member

Откуда: Москва
Сообщений: 77
При выполнении метода reader.Next в процессе чтения из большого XML возникает ошибка:
ОШИБКА #6301: Ошибка анализатора SAX XML: <STORE>

Код:
s reader = ##class(%XML.Reader).%New()
s path = ##class(%File).NormalizeFilename(..ReportDir_$replace(..#SheetPath,"~NUM~",sheetNum))
q:'##class(%File).Exists(path) $$$ERROR("Файл не обнаружен: "_path)
s status = reader.OpenFile(path)
q:status'=$$$OK status
d reader.Correlate("worksheet","Lib.Util.OOXML.SML.CTWorksheet")
s res = reader.Next(.worksheet,.status) 
q:('res)&(status'=$$$OK) status	
w "worksheet ok",!

Строк в XML много, и если их уменьшить ошибка пропадает. Какими средствами можно избежать такой ошибки при чтении больших XML? Хотелось бы использовать корреляцию и не читать каждое свойство объекта отдельно
26 июн 17, 15:20    [20590945]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2322
версия каше какая?
26 июн 17, 15:40    [20591016]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
drakut
Member

Откуда: Москва
Сообщений: 77
DAiMor,

Cache for Windows (x86-64) 2017.1 (Build 792U) Mon Mar 20 2017 19:13:14 EDT
26 июн 17, 16:09    [20591115]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1382
Только мне кажется, что что-то пропущено? Есть
 s res = reader.Next(.worksheet,.status)

а где же цикл? Выкинув часть кода, вы возможно не пожалели и тот фрагмент, который замусоривает память процесса на каждой итерации.
26 июн 17, 16:18    [20591174]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
drakut
Member

Откуда: Москва
Сообщений: 77
Alexey Maslov,

Цикла быть не должно, поскольку внутри XML в данном примере - описание одного листа раззипованного XLSX-файла, то есть там всего один объект, с которым и нужно скоррелировать класс Lib.Util.OOXML.SML.CTWorksheet
26 июн 17, 16:23    [20591201]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3494
drakut,

Я вижу тут два варианта
1. Увеличить ограничение памяти на процесс.
2. Попробовать переопределить Correlate (или что он там вызывает), чтобы он не создавал объекты в памяти, а писал куда-нибудь в таблицу.
26 июн 17, 17:33    [20591560]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка анализатора SAX XML: <STORE>  [new]
drakut
Member

Откуда: Москва
Сообщений: 77
Тема уже рассматривалась:
http://www.sql.ru/forum/1029377/oshibka-store-pri-importe-xml-v-obekt?hl=xml textreader
19 июл 17, 14:52    [20657899]     Ответить | Цитировать Сообщить модератору
Все форумы / Caché Ответить