Частично загрузить XML-файл с XMLBeans или EMF - PullRequest
0 голосов
/ 15 февраля 2012

В настоящее время я использую EMf для чтения ~ 400 XML-файлов. Каждый файл содержит около 100 000 строк и состоит из описательных данных (~ 10%, что-то вроде идентификаторов и ссылок на другие элементы) и реальных данных (~ 90%, длинных строк / текстов).

Моя проблема - когда я читаю все файлы, я получаю OutOfMemoryExceptions. Моя идея решить эту проблему: загружать только идентификаторы и т. Д., И если пользователь пытается получить доступ к данным, которые в данный момент не загружены, он будет загружен в фоновом режиме.

Есть идеи, как этого добиться с помощью EMF или XMLBeans?

редактирование:

мой XML имеет такую ​​структуру:

<A>
 <B>
  <C></C>
  <C></C>
 </B>
 <B>
  <C></C>
 </B>
</A>

Я хочу загрузить корневой узел в любом случае. В этом примере я хочу пропустить узлы C, чтобы мое дерево объектов выглядело так:

A
|-B
\-B

1 Ответ

0 голосов
/ 15 февраля 2012

Для больших файлов XML вам гораздо лучше использовать потоковый синтаксический анализатор XML, а не тот, который считывает весь файл сразу и создает из него DOM. Последний и лучший способ сделать это - использовать StaX (потоковый API для XML) от Sun / Oracle. Вы также, возможно, слышали о SAX .

...