XML仅使用Groovy在Android上部分下载

时间:2015-06-22 19:10:17

标签: android groovy xml-parsing

我一直在阅读Tim Buchalka在Udemy上的“Learn Android Lolipop Development”课程。他用Java教授这门课程,但我认为在groovy中学习这将是一次很好的学习经历。话虽如此,我已经开始创建一个应用程序,从Apple's Website下载前10个免费应用程序XML

我编写的下载XML的应用程序部分是:

public class XMLDownloader extends AsyncTask<Object, Void, String>{
String myXMLData

@Override
protected String doInBackground(Object... urls) {
    try {
        myXMLData = downloadXML((String) urls[0])
    }
    catch (IOException e) {
        return "Unable to download XML file"
    }
    return ""
}

protected void onPostExecute(String result) {
    Log.d("OnPostExecute", myXMLData)
}

String downloadXML(String url) throws IOException {

    String xmlContents = ""

    BufferedReader reader

    try {
        reader = new URL(url).openStream().newReader()

        while (reader.any()) {
            xmlContents += "${reader.readLine()}\n"
        }

        return xmlContents;

    } catch (Exception e) {
        e.printStackTrace()
        return null
    } finally {
        reader?.close()
    }

}
}

出于某种原因,它似乎没有下载完整的XML。

protected void onPostExecute(String result) {
    Log.d("OnPostExecute", myXMLData)
}

只打印出前31行。只下载了前31行,这使得解析XML变得不可能。

使用XmlPullParser进行解析,我得到了

  

06-22 14:58:17.245 30926-30926 / com.lategame.top10downloader W / System.err:org.xmlpull.v1.XmlPullParserException:expected:/ entry read:summary(position:END_TAG @ 17:54 in java.io.StringReader@158cb17f)

什么原因导致XML只能部分下载?

另外,请忽略我使用AsyncTask<Object, Void, String>并投射到String而不是使用AyncTask<String, Void, String>这一事实。这是解决另一个问题的方法。

2 个答案:

答案 0 :(得分:2)

显然,罪魁祸首是logcat具有最大日志长度。 它正在下载完整的XML,我无法将其记录下来。

答案 1 :(得分:1)

您可以将downloadXml重写为

if(strcmp(row[i], user_input) == 0))