以下是我正在尝试解析的XML:http://realtime.catabus.com/InfoPoint/rest/routes/get/51
@Override
protected Void doInBackground(String... Url) {
try {
URL url = new URL(Url[0]);
DocumentBuilderFactory dbf = DocumentBuilderFactory
.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
// Download the XML file
Document doc = db.parse(new InputSource(url.openStream()));
doc.getDocumentElement().normalize();
// Locate the Tag Name
nodelist = doc.getElementsByTagName("VehicleLocation");
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return null;
}
在运行时,当它到达此行时:DocumentBuilder db = dbf.newDocumentBuilder();
我收到以下错误:
Unexpected token (position:TEXT {"RouteId":51,"R...@1:1298 in java.io.InputStreamReader@850b9be)
它似乎与编码有关。我的猜测就是因为XML没有对编码进行分类,但可能没有。
有没有办法在代码中指定编码(我无法更改XML本身)?
谢谢!
编辑:这似乎只有在从网址解析XML时才会发生。在本地存储文件似乎工作正常。
答案 0 :(得分:0)
有没有办法在代码中指定编码(我无法更改 XML本身)?
您可以致电InputSource.setEncoding()
来设置编码。
我建议您先查看XmlPullParser,然后在Android中解析XML。