編輯:關於Android編程
1.Pull簡介
Pull解析器是Android系統內置的的,Pull解析器與SAX解析器類似,他提供了類似的事件,如開始元素和介紹元素的事件,使用parser.next()可以進入下一個元素並觸發相應的事件,然後進行相應的處理,當元素開始解析時,調用perser.nextText()方法就可以獲取到下一個Text類型元素的值。
2.pull特點
(1)簡單的結構,一個接口,一個另外,一個工廠組成了Pull解析器
(2)簡單易用,Pull解析器只有一個重要的方法next(),他被用來檢索下一個事件,而他的事件也僅僅只有五個,START_DOCUMENT, START_TAG ,TEXT, END_TAG, END_DOCUMENT
(3)最小的內存消耗,Pull解析器和SAX解析器一樣,對內存的暫用少,但是SAX解析稍微有點繁瑣,DOM很耗內存,所以Pull被推薦使用
3.src結構
項目包名為 com.pullxml.mypull,在src根目錄下存在person.xml文件
-- com.pullxml.util -- -- Person.java -- com.pullxml.mypull -- -- MainAcitivity.java -- com.pullxml.service -- -- PullService.java -- com.pullxml.test -- -- PullTester.java -- person.xml
4.示例 Pull解析XML
先在src目錄先新建一個android.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>xiaanming</name>
<age>23</age>
</person>
<person id="20">
<name>liudehua</name>
<age>28</age>
</person>
</persons>
新建一個PullXMLService
package com.example.pull_parser;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.util.Log;
import android.util.Xml;
public class PullXMLService {
public static List<Person> readXML() throws Exception{
//獲取src目錄下面的android.xml文件的輸入流
InputStream is = PullXMLService.class.getClassLoader().getResourceAsStream("android.xml");
//用來存放解析的Person對象
List<Person> persons = null;
//一個標記
boolean flag = false;
Person person = null;
//實例化一個XmlPullParser對象
XmlPullParser parser = Xml.newPullParser();
//設置輸入流和編碼
parser.setInput(is, "UTF-8");
//觸發了第一個事件,根據XML的語法,也就是從他開始了解文檔
int eventCode = parser.getEventType();
//如果獲得的事件碼如果是文檔的結束,那麼解析結束
while (eventCode != XmlPullParser.END_DOCUMENT) {
switch(eventCode){
case XmlPullParser.START_DOCUMENT:{
//開始解析的時候我們一般做一些初始化的操作
persons = new ArrayList<Person>();
break;
}
case XmlPullParser.START_TAG:{
//判斷當前的元素是否是需要檢索的元素
if("person".equals(parser.getName())){
flag = true;
person = new Person();
person.setId(Integer.valueOf(parser.getAttributeValue(0)));
}
if(flag){
if("name".equals(parser.getName())){
person.setName(parser.nextText());
}else if("age".equals(parser.getName())){
person.setAge(Integer.valueOf(parser.nextText()));
}
}
break;
}
case XmlPullParser.END_TAG:{
if("person".equals(parser.getName()) && person != null){
flag = false;
persons.add(person);
Log.e("log", person.toString());
person = null;
}
break;
}
}
//這一步很重要,該方法返回一個事件碼,也是觸發下一個事件的方法
eventCode = parser.next();
}
return persons;
}
}
新浪微博如何解綁手機 新浪微博會員怎麼解綁手機 新浪微博會員手
當我們為新浪微博的登陸設置了賬號保護、手機綁定之後,便將新浪微博賬號的安全與我們的手機號聯系起來了。由於換號或者其它原因,我們需要解除綁定的時候該怎麼辦呢?
Android使用listview實現分頁刷新(線程休眠模擬)
當要顯示的數據過多時,為了更好的提升用戶感知,在很多APP中都會使用分頁刷新顯示,比如浏覽新聞,向下滑動到當前ListView的最後一條信息(item)時,會提示刷新加載
Android 集成微信支付和支付寶
最近比較閒,公司項目更換後台,於是自己來研究微信支付和支付寶支付,把自己學習的過程寫下來,以備以後查看。注:要集成微信支付和支付寶功能,必須要有以下幾個配置信息,而這寫信
自定義控件知識儲備-View的繪制流程
在自定義控件這個學習系列裡,首先寫篇文章記錄一下View的繪制流程,壓壓驚:-P。也為以後的自定義控件實踐打個基礎。雖然講解View工作流程的文章很多,其中不乏很多精品文