Преждевременный конец файла при разборе 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 - правильная вещь здесь.