接着之前的部分现在要编写代码解析如下的person.xml文件
liming
30
xiaohong
25
程序结构图如下
person类用于保存信息
SAXPersonService负责解析
package wade.domain;
public class Person {
private Integer id;
private String name;
private Short age;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Short getAge() {
return age;
}
public void setAge(Short age) {
this.age = age;
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
public class SAXPersonService {
public List getPersons(InputStream inputStream) throws Throwable
{
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser parser =factory.newSAXParser();
PersonParser personparse = new PersonParser();
//void parse(InputStream is, DefaultHandler dh)
//throws SAXException, IOException
parser.parse(inputStream, personparse);
inputStream.close();
return personparse.getPersons();
}
//内部类重写了回调函数
private class PersonParser extends DefaultHandler{
private List persons=null;
private Person person=null;
private String tag=null;//用于存储读到的元素节点
public List getPersons() {
return persons;
}
@Override
public void startDocument() throws SAXException {
persons= new ArrayList();//初始化persons
}
@Override
public void characters(char[] ch, int start, int length)
throws SAXException {
if(tag!=null){
String data = new String(ch,start,length);//获得文本节点的数据
if("name".equals(tag)){
person.setName(data);
}else if("age".equals(tag)){
person.equals(new Short(data));
}
}
}
@Override
public void startElement(String uri, String localName, String qName,
Attributes attributes) throws SAXException {
//假设,则
//uri="s",
//localName="person",
//qName="s:person"
//attributes得到所有的属性名和属性值
if("person".equals(localName)){
person = new Person();
person.setId(new Integer(attributes.getValue(0)));
}
tag=localName;
}
@Override
public void endElement(String uri, String localName, String qName)
throws SAXException {
if("person".equals(localName)){
persons.add(person);
person=null;
}
tag=null;
}
}
}
使用junit进行测试
public class SAXPersonServiceTest extends AndroidTestCase{
private static final String TAG = "SAXPersonServiceTest";
public void testGetPersons() throws Throwable{
SAXPersonService service = new SAXPersonService();
InputStream inStream = getClass().getClassLoader().getResourceAsStream("person.xml");
List persons=service.getPersons(inStream);
for(Person p:persons){
Log.i(TAG, p.toString());
}
}
}
结果
说明正确解析了xml文件。
android ViewPager滑动事件(OnPageChangeListener)讲解
首先ViewPager在处理滑动事件的时候要用到OnPageChangeListenerOnPageChangeListener这个接口需要实现三个方法:(onPageScrollStateChanged,onPageScrolled,onPageSelected)onP
Fragment调用父activity中的方法
假如父Activity的类名叫ParentActivity,有一个test()方法在Fragment中调用其实很简单,代码如下:ParentActivityparentActivity=(ParentActivity)getActivity();parentActivity.test()
Android开发之onClick事件的三种写法
packagea.a;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassAActivityextendsActivity{/**Calledwhentheacti