Преждевременный конец файла при разборе XML-файла на Android

Я пытаюсь прочитать XML-файл из приложения для Android, используя XOM в качестве библиотеки XML. Я пытаюсь это:

Builder parser = new Builder();
Document doc = parser.build(context.openFileInput(XML_FILE_LOCATION));

Но я получаю nu.xom.ParsingException: Premature end of file. даже когда файл пуст.

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

В случае, если это помогает, я использую xerces для получения парсера.

------Редактировать-----

PS: цель этого состояла не в том, чтобы разобрать пустой файл, файл оказался пустым при первом запуске, который показал эту ошибку.

2 ответа

Решение

Если вы будете следовать этому посту до конца, кажется, что это связано с xerces и тот факт, что это пустой файл, и они не достигли решения по xerces боковая сторона.

Поэтому я решил проблему следующим образом:

Document doc = null;
try {
    Builder parser = new Builder();
    doc = parser.build(context.openFileInput(XML_FILE_LOCATION));
}catch (ParsingException ex) { //other catch blocks are required for other exceptions.
   //fails to open the file with a parsing error.
   //I create a new root element and a new document.
   //I fill them with xml data (else where in the code) and save them.
    Element root = new Element("root");
    doc = new Document(root);       
}

И тогда я могу делать все, что захочу doc, и вы можете добавить дополнительные проверки, чтобы убедиться, что причина действительно в пустом файле (например, проверить размер файла, как указано в одном из комментариев Сэма по этому вопросу).

Пустой файл не является правильно сформированным документом XML. Бросать исключение ParsingException - правильная вещь здесь.

Другие вопросы по тегам