在Android中,java无法读取编码正确的XML
我有下面的Java代码,应该在Android的res/xml
文件夹中获取XML并对其进行解析
然而,InputStream
可能带有错误的编码,因为不管我做什么,我都不会得到正确的文本。在第parser.nextTag();
(more details here)行中抛出org.xmlpull.v1.XmlPullParserException: Unexpected token
异常。我已经尝试删除BOM(字节顺序标记)并更改编码。我的XML文件中绝对没有无效字符。在Java项目(而不是Android项目)中运行此文件非常有效
我检查了其他问题,但他们中的大多数人似乎都做了和我一样的事情
我的问题是:发生了什么阻止我正确读取XML文件
//...
InputStream is = getInstrumentation().getContext().getResources().openRawResource(com.example.test.R.xml.teste);
//...
public List<Field> parseDocument(InputStream in) {
try {
XmlPullParser parser = Xml.newPullParser();
parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, false);
parser.setInput(in, "utf-8");
parser.nextTag(); // "org.xmlpull.v1.XmlPullParserException: Unexpected token" is thrown here.
return readFeed(parser);
} catch (Exception e) {
e.printStackTrace();
}
return fields;
}
这是一个不起作用的XML示例:http://pastebin.com/i9vRpDW5。在阅读文件时,我确保删除了BOM表
编辑:查看XML的读取方式。我写了下面的方法。无论我使用何种编码,我都会收到一条疯狂的文本
public String readFile(InputStream is) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = "";
StringBuilder result = new StringBuilder();
while ((line = reader.readLine()) != null) {
result.append(line);
}
return result.toString();
}
共 (0) 个答案