В настоящее время я пытаюсь использовать 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.