android 解析XML 生成XML

来源:互联网 发布:java版手机软件下载 编辑:程序博客网 时间:2024/04/26 13:53

                       android  xml解析

Person.java,代码如下

package net.loonggg.test;public class Person {private int id;private String age;private String name;private String sex;private String address;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Person [id=" + id + ", age=" + age + ", name=" + name+ ", sex=" + sex + ", address=" + address + "]";}}
生成xml

/** * 生成xml */private void createXml() {XmlSerializer serializer = Xml.newSerializer();// xml文件生成器File file = new File(Environment.getExternalStorageDirectory(),"person.xml");FileOutputStream fos = null;try {fos = new FileOutputStream(file);serializer.setOutput(fos, "utf-8");// 为xml生成器设置输出流和字符编码serializer.startDocument("utf-8", true);// 开始文档,参数分别为字符编码和是否保持独立serializer.startTag(null, "persons"); // 开始标签,参数分别为:命名空间和标签名for (Person person : list) {serializer.startTag(null, "person");serializer.attribute(null, "id", person.getId() + "");serializer.startTag(null, "name");// 开始标签serializer.text(person.getName());// 文本内容serializer.endTag(null, "name");// 结束标签serializer.startTag(null, "sex");serializer.text(person.getSex());serializer.endTag(null, "sex");serializer.startTag(null, "age");serializer.text(person.getAge());serializer.endTag(null, "age");serializer.startTag(null, "address");serializer.text(person.getAddress());serializer.endTag(null, "address");serializer.endTag(null, "person");}serializer.endTag(null, "persons");// 结束标签serializer.endDocument();// 结束xml文档Toast.makeText(getApplicationContext(), "生成成功!", Toast.LENGTH_SHORT);} catch (Exception e) {Toast.makeText(getApplicationContext(), "生成失败!", Toast.LENGTH_SHORT);e.printStackTrace();} finally {try {fos.close();} catch (IOException e) {e.printStackTrace();}}}

解析xm

/** * 解析xml文件 */private List<Person> pullXml() {try {File file = new File(Environment.getExternalStorageDirectory(),"person.xml");FileInputStream fis = new FileInputStream(file);List<Person> persons = null;Person person = null;XmlPullParser parser = Xml.newPullParser();// 获取xml解析器parser.setInput(fis, "utf-8");// 参数分别为输入流和字符编码int type = parser.getEventType();while (type != XmlPullParser.END_DOCUMENT) {// 如果事件不等于文档结束事件就继续循环switch (type) {case XmlPullParser.START_TAG:if ("persons".equals(parser.getName())) {persons = new ArrayList<Person>();} else if ("person".equals(parser.getName())) {person = new Person();String id = parser.getAttributeValue(0);person.setId(Integer.parseInt(id));} else if ("name".equals(parser.getName())) {person.setName(parser.nextText());} else if ("sex".equals(parser.getName())) {person.setSex(parser.nextText());} else if ("address".equals(parser.getName())) {person.setAddress(parser.nextText());} else if ("age".equals(parser.getName())) {person.setAge(parser.nextText());}break;case XmlPullParser.END_TAG:if ("person".equals(parser.getName())) {persons.add(person);person = null;}break;}type = parser.next();// 继续下一个事件}return persons;} catch (NumberFormatException e) {e.printStackTrace();} catch (FileNotFoundException e) {e.printStackTrace();} catch (XmlPullParserException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return null;}

调用XML

public class MainActivity extends Activity {private Button btn_create = null;private Button btn_pull = null;private TextView tv_show;private List<Person> list = null;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_create = (Button) findViewById(R.id.createXml);btn_pull = (Button) findViewById(R.id.pullXml);tv_show = (TextView) findViewById(R.id.tvShow);list = new ArrayList<Person>();for (int i = 0; i < 5; i++) {Person person = new Person();person.setAge(i + 20 + "");person.setId(i);person.setName("loonggg" + i);person.setSex("男");person.setAddress("中南海" + i + 1 + "大街");list.add(person);}btn_create.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {createXml();}});btn_pull.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {tv_show.setText(pullXml().toString());}});}}






0 0