本地提供XML數據,Android端獲取並解析成List集合顯示

  本地提供XML數據,使用 MyEclipse ,項目地址

     Android端獲取並解析成List集合顯示,用Android Studio,項目地址

     該項目在完成的過程中,所遇到的問題:

     1、jstl 的 taglib 中的 uri 的設置:(需要到jar包,項目中已經導入)

以前在學Java Web 時有學到過,請按照以下路徑找到對應的 url 地址(這個地址不支持EL表達式,下面告知支持EL表示的url地址)。

 

圖:jstl url路徑

    支持EL表達式的地址:http://java.sun.com/jstl/core_rt  (當然方法不只這一種)

    2、MyEclipse 中更改了 ListServlet.java 的包名,導致服務器啓動後總是空白,無任何信息。

          其實這裏,右鍵更改了包名後,配置文件裏並不會自動改變,需要在web.xml中檢查配置的servlet-class 是否正確,在這裏卡得有點久,因爲沒有啥有價值的提示。

    3、在jsp頁面中,想要輸出的頁面爲xml而不是html,需要在 page 標籤中設置字段contentType="text/xml"

    4、Toast 需要寫在UI線程中,這句很重要,以前做項目過程中沒有過多的關注Toast,導致這次調試後才發現是Toast部分出了問題。

          在網絡不佳或沒網的時候,請求connection.getResponseCode() 出現崩潰,後來經過調試發現,它們崩潰時報IOException,調試跟蹤,我將 Toast 信息寫在了 catch 部分,而網絡獲取是寫在子線程中的。

    還有另一個錯誤是,carch 的 Exception e,  e 爲空,而我接下來也調用了 e.printStackTrace() ,需要對 e 的值加以判斷。

    5、XML 解析時調用 parser.setInput(in,UTF-8); 時,總是崩潰,因跟蹤進去時,它是接口,沒有找到有價值的信息,網絡上所是編碼有誤,我下載了火狐插件debug跟蹤,證明網頁響應編碼是 UTF-8。

        後來通過觀察日誌信息,發現是因爲我提前關閉了stream ,查找到對應的地方,原來,是我在返回 InputStream 前已經調用了 connection.disconnect() 關閉了連接。

       另加一句:獲取xml 的地址,必須是局域網的ip地址,不能是 localhost,如用 cmd 輸入 ipcpnfig,就可以得到對應的局域網 ip,我的 ip 是 192.168.1.24,你的機器可能會不一樣。

   通過這個項目,使我加深了對 xml pull 解析的理解,以及鞏固子線程與主線程各自的操作範圍,解決問題的能力與方式等,都得到了較大的提升。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章