Не удалось выполнить синтаксический анализ Android XML Неожиданный токен

В моем приложении (игре) мне нужно прочитать XML-скрипт и включить его в объект класса; Я завершил весь XML-ридер через DOM

Но когда я запустил, я получил следующую ошибку:

05-08 23:03:22.342: I/System.out(588): XML Pasing Excpetion = org.xml.sax.SAXParseException: Unexpected token (position:TEXT                     ...@1:69 in java.io.InputStreamReader@4129a200) 

Я прочитал некоторые ответы об этом, но все они не смогли исправить мою проблему (http://stackoverflow.com/questions/7885962/android-utf-8-file-parsing).

Вот мой код:

  InputStream inputStream = ctx.getResources().openRawResource(R.xml.script); ctx.getApplicationContext().getPackageName()+"/xml/"+path); Reader reader = new InputStreamReader(inputStream,"UTF-8"); InputSource is = new InputSource(reader); is.setEncoding("UTF-8"); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document root = db.parse(is); 

В соответствии с проблемой, я также пробовал это:

  InputStream inputStream = ctx.getResources().openRawResource(R.xml.script); Document root = db.parse(inputStream); 

Который выдал точно такие же исключения …

Как решить эту проблему?

Мой XML-файл:

 <script> <scene no="0"> <character id="1">1</character> <dialog no="1"> <title>1</title> Sub-Element 1 </dialog> </scene> </script> 

Ваш XML недействителен. «Подэлемент 1» должен находиться внутри самого элемента. XML-документы также должны начинаться с тега, определяющего его как XML: <?xml version="1.0" ?> Таким образом, ваш полный файл:

 <?xml version="1.0" ?> <script> <scene no="0"> <character id="1">1</character> <dialog no="1"> <title>1</title> <something_else>Sub-Element 1</something_else> </dialog> </scene> </script> 

Или вы можете использовать «Sub-Element» в качестве имени элемента (вместо something_else ) и 1 как значение.

Где вы храните свой XML-файл? В папке «res». Вы должны сохранить его в «активах». Res-решение не работает из-за специфики папки «res» и ее презентации в apk. Переместите файл в «активы», и вы увидите, что все работает. Используйте следующий код для создания InputSource

 getAssets().open("yourfilename.xml")