2012-05-08 3 views
3

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

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

05-08 23:03:22.342: I/System.out(588): XML Pasing Excpetion = org.xml.sax.SAXParseException: Unexpected token (position:TEXT ��������������������[email protected]:69 in [email protected]) 

я читал некоторые ответы об этом, но все они не смогли исправить мою проблему (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> 

ответ

6

Ваш 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 как значение.

3

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

getAssets().open("yourfilename.xml") 
Смежные вопросы