本文主要是介绍实例教程四:采用Pull解析器解析和生成XML内容,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Android——activity生命周期Demo
http://www.eoeandroid.com/thread-207556-1-1.html
Android——service生命周期Demo
http://www.eoeandroid.com/thread-207558-1-1.html
android spinner 基础小实例
http://www.eoeandroid.com/thread-207188-1-1.html
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World, MainActivity!</string> <string name="app_name">XML解析</string> </resources>
在src下新建的Person.xml
<?xml version="1.0" encoding="UTF-8"?> <persons> <person id="23"> <name>LiMing</name> <age>30</age> </person> <person id="20"> <name>ZhangSan</name> <age>25</age> </person> </persons>
package cn.itcast.domain; public class Person { private Integer id; private String name; private Integer 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 Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } @Override public String toString() { return "Person [id=" + id + ", name=" + name + ", age=" + age + "]"; } public Person(){ } public Person(Integer id, String name, Integer age) { super(); this.id = id; this.name = name; this.age = age; } }
package cn.itcast.xml; import android.app.Activity; import android.os.Bundle; public class MainActivity extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } }
package cn.itcast.service; import java.io.InputStream; import java.io.OutputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserFactory; import org.xmlpull.v1.XmlSerializer; import android.util.Xml; import cn.itcast.domain.Person; public class PersonService { /** * 获取数据 * @param xml * @return * @throws Exception */ public static List<Person> getPerson(InputStream xml) throws Exception{ List<Person> persons = null; Person person = null; //第一种写法 // XmlPullParser pullParser = XmlPullParserFactory.newInstance().newPullParser(); //第二种写法 XmlPullParser pullParser = Xml.newPullParser(); pullParser.setInput(xml, "UTF-8"); //为Pull解析器设置要解析的XML数据 int event = pullParser.getEventType(); while(event != XmlPullParser.END_DOCUMENT){ switch(event){ case XmlPullParser.START_DOCUMENT: persons = new ArrayList<Person>(); break; case XmlPullParser.START_TAG: if("person".equals(pullParser.getName())){ int id = new Integer(pullParser.getAttributeValue(0)); person = new Person(); person.setId(id); } if("name".equals(pullParser.getName())){ String name = pullParser.nextText(); person.setName(name); } if("age".equals(pullParser.getName())){ int age = new Integer(pullParser.nextText()); person.setAge(age); } break; case XmlPullParser.END_TAG: if("person".equals(pullParser.getName())){ persons.add(person); } break; } event = pullParser.next(); } return persons; } /** * 保存数据到XML文件中 * @param persons 数据 * @param out 输出方向 * @throws Exception */ public static void save(List<Person> persons, OutputStream out) throws Exception{ XmlSerializer serializer = Xml.newSerializer(); //得到序列化器 serializer.setOutput(out, "UTF-8"); serializer.startDocument("UTF-8", true); //true--是否该文件单独存在 serializer.startTag(null, "persons"); for(Person person : persons){ serializer.startTag(null, "person"); serializer.attribute(null, "id", person.getId().toString()); serializer.startTag(null, "name"); serializer.text(person.getName()); serializer.endTag(null, "name"); serializer.startTag(null, "age"); serializer.text(person.getAge().toString()); serializer.endTag(null, "age"); serializer.endTag(null, "person"); } serializer.endTag(null, "persons"); serializer.endDocument(); out.flush(); out.close(); } }
单元测试:
package cn.itcast.test; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import cn.itcast.domain.Person; import cn.itcast.service.PersonService; import android.test.AndroidTestCase; import android.util.Log; public class PersonServiceTest extends AndroidTestCase{ private static final String TAG = "PersonServiceTest"; public void testPersons() throws Exception{ InputStream xml = this.getClass().getClassLoader().getResourceAsStream("person.xml"); List<Person> persons = PersonService.getPerson(xml); for(Person person : persons){ Log.i(TAG, person.toString()); } } public void testSave() throws Exception{ List<Person> persons = new ArrayList<Person>(); persons.add(new Person(1, "zhangsan", 80)); persons.add(new Person(2, "lisi", 43)); persons.add(new Person(3, "wangwu", 12)); //<包> ///file File xmlFile = new File(getContext().getFilesDir(), "itcast.xml"); FileOutputStream outStream = new FileOutputStream(xmlFile); PersonService.save(persons, outStream); } }
这篇关于实例教程四:采用Pull解析器解析和生成XML内容的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!