Способы хранения и чтения больших объемов данных в Java-приложении под Android
Какая скорость в SQLite?
Вставки идут в рамках одной транзакции?

Использовался ли prepared statements? Он позволяет 1 раз распарсить ваш запрос, а потом только данные для вставки меняются.

P.S. странное решение — парсить XML в тех случаях, когда мало SQLite.
XPath на мой взгляд будет гораздо дольше + может памяти не хватить.

В каких целях будете использовать эти данные?
Если в выборке нужны условия, то от SQLite не уйти.
Вообще SQLite — специализированное хранилище, т.е. его скорость вряд ли удастся обойти.
Только если использование этих данных специфическое, то только тогда есть шанс построения специального хранилища, которое по скорости обойдет SQLite.

В одном проекте использовал protobuf, но не в целях ускорения выборки, в целях прототипирования — можно сразу генерировать классы для работы с данными. В результате так и остался на protobuf — скорость оказалась вполне приемлемая.
Ну для SQLITE при вставке больших объемов играться с PRAGMA.
PRAGMA synchronous=OFF — отключает проверку записи данных на файловую систему
ну и перенос файла транзакций и временного буфера в память (экономим на обращениях к диску (встроенной/карте памяти)
PRAGMA journal_mode=MEMORY
PRAGMA temp_store=MEMORY

Подробнее sqlite.org/pragma.html