2015-06-07 3 views
1

Я реализовал VTD-Parser в java, который успешно проанализировал XML-файл размером около 500 МБ и смог написать в excel. Я понимаю, что парсер DOM сначала создал структуру узла дерева, а затем получил данные, а SAX - это парсер, основанный на событиях. Но что делает VTD синтаксическим анализом файла таким простым и эффективным? Я попытался выполнить поиск, у меня было много примеров реализации, но у меня не было логики. Я попробовал приведенную ниже ссылку, чтобы получить эту идею, но не получил четкой картины. VTD_Parserjava VTD-Parser Logic

Если кто-нибудь может объяснить краткую идею.

ответ

1

В соответствии с Wikipedia page по теме VTD-XML (дескриптор виртуального токена для XML) использует не exctractive синтаксический анализ, то есть он не извлекает данные из документа в некоторую структуру данных на основе памяти, а скорее строит структура данных, содержащая указатели (в виде смещения и длины) в исходный документ. Эта обработка, очевидно, является наиболее эффективной для памяти, но я считаю, что она стоит за счет производительности, поскольку неизбежная операция ввода-вывода выполняется, когда запрашиваются данные (но кеширование может помочь здесь много).

Мне кажется, что тис обработки является наиболее полезным, когда вход очень большой и запрошенные данные очень малы (такого сценария добычи данных)

+0

, что многое объясняет .. спасибо. –

+0

@Bhavik Это неточно, Vtd-xml лучше подходит для большой навигации, чем DOM, и практически не требует затрат на IO ... правда в том, что извлечение данных в структуру данных - это всего лишь трата вычислительной мощности и памяти. Я был бы рад прояснить подробнее ... –

+0

@ vtd-xml-author - так что делает синтаксический анализ файла таким простым и эффективным? –