讀寫XML
Android中有三種內建XML的解析方式,分別為Dom、Sax、Pull,其中Pull的解析方式最適合運算能力小的行動裝置。
- Dom解析方式: 首先一下子加載整個xml檔案然後再輪詢每個節點一個一個解析
- Sax解析方式: Sax是事件驅動型解析方式,雖說是事件驅動型的好像和pull差不多,但確沒有像pull那樣提供next方法,想向下繼續解析就向下,所以Sax便缺少了靈活性、死板,包括得到資料也是要預先用模板弄好,對於特殊的資料結構還要用變數控制。
- Pull的解析方式: Pull驅動型解析方式,加載時不把所有的節點都加載到解析機裡,只是去一個一個節點去查找,如果是需要的節點就取出來。如果在一個XML文檔中我們只需要前面一小部分的資料,而我們卻使用SAX或DOM等方式會對整個文檔進行解析,儘管XML文檔中後面的大部分資料我們其實都不需要解析,因此這樣實際上就浪費了處理資源。因此,行動裝置android系統使用PULL方式正合適。
jsoup是一個Java函示庫專們給現實世界中的HTML工作的。它提供了很方便的API用於提取和操作資料,使用最佳的DOM、CSS、以及類似jquery的方法。
jsoup實現了WHATWG的HTML5規範,並解析HTML以相同的DOM作為現代瀏覽器做的。
- 從一個URL、檔案或字串解析HTML
- 查找和提取數據,使用DOM遍歷或CSS選擇器
- 操作HTML元素,屬性和字串
- 對安全白名單乾淨的用戶提交內容,以防止XSS攻擊
- 輸出整齊的HTML
jsoup不只JAVA可以用,ANDROID也可以直接導入來作使用,本篇示範一個簡單的範例,是利用jsoup抓取中華民國文化部的最新公告,除了本身jsoup函式庫的利用之外,還有幾點是必須要注意的事項:
這個東西我把它封裝的應該還不錯...只要在activity直接findviewbyid便可以對數字進行設定。非常方便,可以應用在任何領域,我之前是用在遊戲上顯示分數,效果也不賴,你不喜歡這幾張圖片,自己photoshop重畫便可。
重點是我寫的這個Number.java類別,其實裡面有很多有趣的技術:
- 行程同步
- 自適應螢幕的bitmap大小
- 動態調整View元件大小
- SurfaceView背景透明
Dynamically change View Stub layout_height attribute?
要如何動態修改TextView、ImageView、SurfaceView這些繼承View的高度、寬度呢?
get the Bitmap from ImageView in a ListView
其實也不是直接就ImageView轉Bitmap,畢竟這兩個物件型別差哪麼多,只是說剛好ImageView是UI元件,所以它有顯
這個範例我把它封裝得很不錯(自以為),大致上是可以直接利用網址url,便可以下載任何網路上的檔案,不管是圖片還是影片還是word檔,我開發這個類別的時候是要下載政府open data的.csv檔案。除此之外,還有一個內部類別FileUtils是專門做記憶卡上的檔案讀寫操作用,重點是可以直接將剛剛網路上下載下來的檔案,寫入到記憶卡,以便開發人員之後的利用
在android環境中因為語法是完全遵循JSE標準的,所以可以直接繼承javax.mail.Authenticator類別來實作我們寄信的流程,在本篇文章中,將會介紹寄送google gmail郵件的方式,讓你在android app中只要兩行重點程式碼便可以將信件寄出了!!