Android Pull 解析 XML
下面是效果圖,代碼中有詳細解釋,

res/raw/person.xml
<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="001">
<name>張三</name>
<age>22</age>
</person>
<person id="002">
<name>李四</name>
<age>23</age>
</person>
<person id="003">
<name>王五</name>
<age>24</age>
</person>
</persons>PullParse.java
public class PullParse {
public static List<Person> parse(InputStream inputStream) throws Exception{
List<Person> persons=null;
Person person=null;
XmlPullParser parser=Xml.newPullParser();
parser.setInput(inputStream, "UTF-8");
int event=parser.getEventType();
while(event!=XmlPullParser.END_DOCUMENT){
switch(event){
//判斷當前事件是否是文檔開始事件
case XmlPullParser.START_DOCUMENT:
persons=new ArrayList<Person>();
break;
//判斷當前事件是否是標簽元素開始事件
case XmlPullParser.START_TAG:
//判斷開始標簽元素是否是book
if("person".equals(parser.getName())){
person=new Person();
person.setId(new Integer(parser.getAttributeValue(0)));
}
if(person!=null){
if("name".equals(parser.getName())){
person.setName(parser.nextText());
}else if("age".equals(parser.getName())){
person.setAge(new Integer(parser.nextText()));
}
}
break;
//判斷當前事件是否是標簽元素結束事件
case XmlPullParser.END_TAG:
//判斷結束標簽元素是否是person
if("person".equals(parser.getName())){
persons.add(person);//將person添加到persons集合
person = null;
}
break;
}
//進入下一個元素并觸發相應事件
event = parser.next();
}
return persons;
}
}在主程序中調用
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn=(Button) findViewById(R.id.button);
listView=(ListView) findViewById(R.id.listView);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View arg0) {
try {
InputStream i =getResources().openRawResource(R.raw.person);
List<Person>persons = PullParse.parse(i);
for (Iterator iterator = persons.iterator(); iterator.hasNext();) {
Person person = (Person) iterator.next();
list.add(String.valueOf("ID:"+person.getId()) + " 姓名: "
+ person.getName() + " 年齡: " + person.getAge());
}
} catch (Exception e) {}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(
getApplicationContext(),
android.R.layout.simple_list_item_1,
list);
listView.setAdapter(adapter);
}
});
} 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!