Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android XML解析失败,意外令牌_Android_Xml_Sax - Fatal编程技术网

Android XML解析失败,意外令牌

Android XML解析失败,意外令牌,android,xml,sax,Android,Xml,Sax,在我的应用程序(游戏)中,我需要读取一个XML脚本并将其转换为类对象;我已经通过DOM完成了整个XML阅读器 但是当我运行时,我得到了以下错误: 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.InputStreamR

在我的应用程序(游戏)中,我需要读取一个XML脚本并将其转换为类对象;我已经通过DOM完成了整个XML阅读器

但是当我运行时,我得到了以下错误:

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>

1.
1.
次级要素1
您的XML无效。“子元素1”应位于元素本身内。 XML文档还应该以一个标记开始,该标记将其定义为XML:
,因此您的完整文件应该是:

<?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>

1.
1.
次级要素1

或者您可以使用“Sub-Element”作为元素名称(而不是
其他内容
),使用1作为值。

您的xml文件存储在哪里?在“res”文件夹中。您应该将其存储在“资产”中。Res解决方案不起作用,因为“Res”文件夹及其在apk中的表示形式的特殊性。将您的文件移动到“资产”中,您将看到一切正常。 使用以下代码创建InputSource

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