我一直在阅读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>
这一事实。这是解决另一个问题的方法。
答案 0 :(得分:2)
显然,罪魁祸首是logcat具有最大日志长度。 它正在下载完整的XML,我无法将其记录下来。
答案 1 :(得分:1)
您可以将downloadXml重写为
if(strcmp(row[i], user_input) == 0))