Java XMLReader - это синтаксический анализатор SAX2. Когда анализатор DOM считывает весь XML-файл и создает (часто большую) структуру данных (обычно дерево) для представления его содержимого, SAX-анализатор позволяет зарегистрировать обработчик, который будет вызываться, когда части XML-документа распознан. В этом коде обратного вызова вы можете сохранить только достаточно данных, чтобы сделать то, что вам нужно - например, Вы можете сохранить все поля, которые в итоге окажутся в базе данных одной строкой, вставить эту строку и затем отбросить данные. При таком типе проектирования потребление памяти вашей программой зависит в меньшей степени от размера файла, чем от сложности и размера одного логического элемента данных (в вашем случае это данные, которые станут одной строкой в базе данных).
Даже если вы использовали парсер DOM-стиля, все может быть не так плохо, как вы ожидаете. XML довольно многословен, поэтому (в зависимости от его структуры и т. Д.) Файл размером 100 МБ часто представляет только 10-20 МБ данных, и всего 5 МБ данных не будут особенно редкими или невероятными.