使用SAX在没有xml声明的Android中解析xml

时间:2016-06-09 17:15:09

标签: java android xml

以下是我正在尝试解析的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时才会发生。在本地存储文件似乎工作正常。

1 个答案:

答案 0 :(得分:0)

  

有没有办法在代码中指定编码(我无法更改   XML本身)?

您可以致电InputSource.setEncoding()来设置编码。

我建议您先查看XmlPullParser,然后在Android中解析XML。