2016-06-15 2 views
0

Я хочу создать DOM огромного XML-файла, используя синтаксический анализатор. Но DOM-парсеры - это хоггеры памяти. Поэтому я хотел знать, есть ли альтернатива для парсеров DOM, которые не будут использовать много памяти, но я могу создать DOM из нее. Также, пожалуйста, предложите, есть ли какие-либо другие эффективные алгоритмы или парсеры для обработки такой ситуации.Как создать DOM для XML без использования DOM-анализатора

+0

Парсер не заполняет вашу память, но сам DOM. – wero

+0

Хорошо. Но во время разбора он не создает много накладных расходов, которые также хранятся в памяти, кроме DOM? –

+0

Почему парсер должен это делать? – wero

ответ

0

Причина, по которой парсер DOM использует много памяти, объясняется тем, что DOM использует много памяти.

Существуют древовидные модели, которые занимают меньше памяти, чем DOM, например JDOM2 или XOM. Они также гораздо удобнее.

Существует множество других методов сокращения памяти, используемых при обработке XML, но все зависит от того, что вы хотите сделать с XML после его анализа.

+0

Я хочу разделить два xml s, чтобы быть точным. Мой план состоит в том, чтобы проанализировать xml s, сохранить их как DOM и сравнить их. Поэтому после разбора я хочу сравнить xml. –

+0

Ну, различие - это само по себе искусство. Почему бы не получить инструмент, предназначенный для работы, например DeltaXML, вместо того, чтобы пытаться изобрести колесо? И если вы хотите реализовать его самостоятельно, почему бы не использовать язык высокого уровня, предназначенный для обработки XML, например XSLT или XQuery? –

0

Как вы сказали, DOM является Hogger памяти, JDOM или DOM4J также имеют схожие проблемы ... Я не faimilar с JDOM2, но это, кажется, есть много сходств с JDOM ..

Основная причина Проблема памяти DOM на самом деле является неотъемлемым ограничением выделения множества небольших дискретных объектов ...

VTD-XML - это решительный отход от DOM, JDOM и DOM4J. Вместо того, чтобы выделять много мелких объектов, он выделяет большие блоки памяти внутри и позволяет значительно экономить память, сохраняя при этом большинство возможностей произвольного доступа, и XPath

Так что я предлагаю не строить DOM на все ... нет ничего, что вы можете сделать с DOM, что вы не можете с vtd-xml

Смежные вопросы