使用InputStream reader从/ res / xml读取XML文件会产生无效字符/编码数据

时间:2011-02-12 03:00:47

标签: java android xml

我无法从位于/res/xml/testxml.xml的XML资源中读取XML数据。出于某种原因,使用我的书和在线的例子,我无法正确阅读数据。以下方法很简单;读取XML资源并在其中打印行。

public InputStream fetchLocalStream(String file){
    InputStream in = null;

    try {
        //in = Global.gContext.openFileInput("testxml.xml");
        in = Global.gContext.getResources().openRawResource(R.xml.testxml);
        try {
             if (in != null) {
                  // prepare the file for reading
                  InputStreamReader inputreader = new InputStreamReader(in);
                  BufferedReader buffreader = new BufferedReader(inputreader);

                  String line;

                  // read every line of the file into the line-variable, on line at the time
                  while (( line = buffreader.readLine()) != null) {
                      Log.d(Global.TAG,"-->Line:" + line);
                    // do something with the settings from the file
                  }

                }
            } catch (Exception e){}


            return in;
    }catch (Exception e){ Log.d(Global.TAG,"--> Failed!!!!" + e); }
    return in;
}

非常感谢任何帮助。

Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜♥└Ç└Ç└Ç#└Ç└Ç└Ƕ└Ƕ└Ç└Ç└Ç└Ç└Ç└Ç└Ç└Ç└Ç♦☺►└Ç∟└Ç└Ç└Ç
Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜$└Ç└Ç└└Ç└Ç└Ç└Ç└Ç└Ç└Ç♥☺►└Ç↑└Ç└Ç└Ç
Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜♥└Ç└Ç└Ç#└Ç└Ç└Ç☻☺►└Ç$└Ç└Ç└Ç
Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜♥└Ç└Ç└Ç%└Ç└Ç└Ƕ└Ƕ└Ç└Ç└Ç└Ç└Ç└Ç└Ç└Ç└Ç♦☺►└Ç∟└Ç└Ç└Ç
Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜&└Ç└Ç└└Ç└Ç└Ç└Ç└Ç└Ç└Ç♥☺►└Ç↑└Ç└Ç└Ç
Line:└Ç└Ç└Ç∩┐╜∩┐╜∩┐╜∩┐╜♥└Ç└Ç└Ç%└Ç└Ç└Ç☻☺►└ÇL└Ç└Ç└Ç

2 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,并在anddev.org的线程“Android SAX xml not well-formed”中找到了解决方案:

  

发现了一个有趣的东西 - 当将xml文件从xml文件夹移动到raw时,一切运行顺利。我猜这就是为什么函数被称为openRawResource。   无论如何我认为android添加一些东西存储在非原始文件夹中的文件。但这只是一个大声的想法。

从/ res / xml移动到/ res / raw解决了我的问题。

答案 1 :(得分:1)

问题可能是字符编码问题。尝试使用XmlResourceParser,您可以通过Resources.getXml获取。 (大多数XML解析器都适应处理字符编码。)Here's an example

http://developer.android.com/reference/android/content/res/Resources.html