Android SAXParser: не правильно сформированный документ ... То, что * do *, правильно сформировано - PullRequest
0 голосов
/ 25 января 2012

Итак, у меня есть операция запуска, когда пользователь выбирает файл (фактически, каталог, содержащий .xml и .wav).

Когда он нажимает на файл, который хочет открыть, Я запускаю новое действие, которое работает с ранее выбранными файлами.

  • отображать файлы пользователю
  • Launcher_Activity: onClick: Other_Activity.path_dir = file.getAbsolutePath ();startActivity (Other_Activity_Intent);
  • Other_Activity: file_source = new InputSource (new StringReader (path_dir + "/xml.xml"));parser.parse (file_source)

ParseException: в строке 1, column0: неправильно сформирован (недопустимый токен)

похоже, что файл XML был пуст... но я знаю, что мой path_dir правильный, и мой xml-файл также находится в нужном месте

Я также знаю, что он правильно сформирован, потому что я использовал его раньше.В предыдущей версии приложения .xml и .wav были «в приложении», поэтому я использовал

file_source = new InputSource (getResources (). OpenRawResource (R.raw.xml));

Использование необработанных ресурсов работало.Но я пытаюсь поместить ресурс за пределы приложения, и мой XML-документ больше не распознается ...

<?xml version="1.0" encoding="utf-8"?>
<text>
    <lots of tag .../>
</text>

The the not typpo в xml ... У кого-нибудь есть подсказка?


РЕДАКТИРОВАТЬ:

file_source = new InputSource(new StringReader( path_dir + "/xml.xml" ));
file_source.setEncoding("UTF-8");
parser.parse(file_source);

Кажется, чтобы избежать неправильно сформированного исключения ... Но приложение "зависает в другом месте, я должен отследить, где ...

Ответы [ 3 ]

1 голос
/ 25 января 2012

Попробуйте зарегистрировать входящий поток, который вы получаете.

Я не очень много знаю о InputSource, но, думаю, есть проблема с правильным чтением файла.

Попробуйте использовать это вместо

FileInputStream fis = new FileInputStream(new File("path to file));
parser.parse(fis);
0 голосов
/ 22 марта 2013

XML-файлы в каталоге res "предварительно скомпилированы" в двоичную форму.

Вот почему вы получаете сообщение об ошибке

ParseException : At line 1, column0: not well-formed (invalid token)

Переместите его в каталог ресурсов как кто-тоеще предложено, и вы сможете прочитать это так, как вы хотите.Подсказка: папка ресурса находится «вне приложения» в той же степени, что и папка res.То есть.совсем нет.

0 голосов
/ 25 января 2012

Поместите файл XML в папку /assets и затем используйте эту строку:

parser.parse(new InputSource(getAssets().open("xml.xml")));
...