我一直在通過Tim Buchalka在Udemy上的「學習Android Lolipop開發」課程。他用Java教授課程,但我認爲這是一個很好的學習經驗,而不是常規。話雖這麼說,我已經到了一個地步,他是創建下載從Apple's WebsiteXML僅在Groovy上的Android上部分下載
是下載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:預期:/entry read:summary(位置:END_TAG @ 17:54,位於[email protected])
什麼可能導致XML僅部分下載?
此外,無視我正在使用AsyncTask<Object, Void, String>
並將其轉換爲String
而不是使用AyncTask<String, Void, String>
。這是解決整個其他問題的一種解決方法。
哇,這簡單得多。它工作得更好,但它仍然只能打印41行。 logcat的最大長度是否會在一條消息中打印出來? – Fiberwire
嘗試註銷字符串的'length()'? –
你也可以嘗試調用'new XmlSlurper()。parse(url)',因爲它應該爲你處理流並返回一個[GPathResult](http://docs.groovy-lang.org/latest/html/ api/groovy/util/XmlSlurper.html#parse(java.lang.String)) –