JAXB - демаршалировать OutOfMemory: Java Heap Space

В настоящее время я пытаюсь использовать JAXB для демаршалинга XML-файла, но кажется, что XML-файл слишком велик (~ 500 МБ) для его обработки . Я продолжаю получать java.lang.OutOfMemoryError: Java heap space @

Unmarshaller um = JAXBContext.newInstance("com.sample.xml");
Export e = (Export)um.unmarhsal(new File("SAMPLE.XML"));

Я предполагаю, что это потому, что он пытается открыть большой XML-файл как объект, но файл слишком велик для пространство кучи java.

Есть ли другой более эффективный с точки зрения памяти метод анализа больших файлов XML размером ~ 500 МБ? Или, возможно, свойство unmarshaller, которое может помочь мне обработать большой XML-файл?

Вот как выглядит мой XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- -->
<Export xmlns="wwww.foo.com" xmlns:xsi="www.foo1.com" xsi:schemaLocation="www.foo2.com/.xsd">
<!--- --->
<Origin ID="foooo" />
<!---- ---->
<WorkSets>
   <WorkSet>
      <Work>
         .....
      <Work>
         ....
      <Work>
      .....
   </WorkSet>
   <WorkSet>
      ....
   </WorkSet>
</WorkSets>

Я бы хотел демаршалировать на уровне WorkSet, чтобы я мог читать всю работу для каждого WorkSet.

8
задан TyC 1 November 2011 в 19:16
поделиться