編輯:關於Android編程
准備一個供解析的xml文件,這裡我們假定要解析的文件名稱為person.xml,文件的具體內容為:
liming
23
接下來寫一個person的JavaBean:
package com.yangzi.domain;
public class Person {
private int id;
private String name;
private int age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
是業務類的編寫:
package com.yangzi.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import android.util.Xml;
import com.yangzi.domain.Person;
public class PersonService {
public static List getPersons(InputStream xml) throws Exception {
List persons = null;
Person person = null;
//得到xmlpull解析器
XmlPullParser pullParser = Xml.newPullParser();
//設置解析器要解析的內容,和編碼方式
pullParser.setInput(xml,"utf-8");
//循環讀取xml文件的節點
int event = pullParser.getEventType();//得到xml文件中的一個節點
while(event != XmlPullParser.END_DOCUMENT){
switch (event) {
//xml文件開始節點,開始節點一般做數據的初始化
case XmlPullParser.START_DOCUMENT:
persons = new ArrayList();
break;
//若為開始節點
case XmlPullParser.START_TAG:
//若為person節點
if("person".equals(pullParser.getName())){
//得到id
person = new Person();
//int id = Integer.parseInt(pullParser.getAttributeValue(0));
//int id = new Integer(pullParser.getAttributeValue(0));
int id = Integer.valueOf(pullParser.getAttributeValue(0));
person.setId(id);
}
//若為名字節點
if("name".equals(pullParser.getName())){
String name = pullParser.nextText();
person.setName(name);
}
//若為年齡節點
if("age".equals(pullParser.getName())){
//int age = Integer.parseInt(pullParser.nextText());
//int age = new Integer(pullParser.nextText());
int age = Integer.valueOf(pullParser.nextText());
person.setAge(age);
}
break;
case XmlPullParser.END_TAG:
if("person".equals(pullParser.getName())){
persons.add(person);
person = null;
}
break;
}
event = pullParser.next();//讀取下一個節點
}
return persons;
}
}
就可以寫測試類對其進行測試了:
package com.yangzi.test;
import java.io.InputStream;
import java.util.List;
import android.test.AndroidTestCase;
import android.util.Log;
import com.yangzi.domain.Person;
import com.yangzi.service.PersonService;
public class PersonServiceTest extends AndroidTestCase {
private static final String TAG = "PersonServiceTest";
public void testPersons() throws Exception{
InputStream in = this.getClass().getClassLoader().getResourceAsStream("person.xml");
List persons = PersonService.getPersons(in);
for(Person per:persons){
Log.i(TAG, per.toString());
}
}
}
要在項目清單文件中引入測試環境:
.....
....
....
ok,點擊testPersons方法,運行為Android Junit Test試試吧!
根據業務類PersonService 的分析代碼,可以看出,在xml文件中的並沒有進行操作,可以任意命名,也就是說,在解析xml文件時可以直接提取自己想要的就行了,其他的不用操作。
自己的想法,不知道對否,請大神指正啊!
一,shiro授權 授權流程:跟用戶的認證流程類似,shrio在用戶授權的時候,最後還是去Realm獲取信息。 shiro的三種授權方式:
前言ImageView是android開發中非常常用的一種控件,在顯示圖片時,我們可以直接拿來用,也可以根據使用場景,結合幾種不同的顯示方式ScaleType,來對顯示的
先上效果圖: 驗證碼采用PHP返回的imageview來實現,xml如下:
ImageView的Scaletype決定了圖片在View上顯示時的樣子,如進行何種比例的縮放,及顯示圖片的整體還是部分,等等。設置的方式包括:1. 在layout xm