[置顶]pull解析器: 反序列化与序列化
来源:互联网 发布:linux配置网络 编辑:程序博客网 时间:2024/06/08 14:08
pull解析器:反序列化 读取xml文件来获取一个对象的数据
1 import java.io.FileInputStream; 2 import java.io.IOException; 3 import java.util.ArrayList; 4 import java.util.List; 5 6 import org.xmlpull.v1.XmlPullParser; 7 import org.xmlpull.v1.XmlPullParserException; 8 import org.xmlpull.v1.XmlPullParserFactory; 9 10 public class ReadXmlTest {11 12 /**13 * pull解析器:反序列化 读取xml文件来获取一个对象的数据14 * @param args15 * @throws XmlPullParserException 16 * @throws IOException 17 */18 public static void main(String[] args) throws XmlPullParserException, IOException {19 20 //1.导包21 //2.获取解析器工厂22 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();23 //3.根据工厂获取解析器对象24 XmlPullParser parser = factory.newPullParser();25 //4.设置输入流26 parser.setInput(new FileInputStream("src/student.xml"),"utf-8");27 //5.解析28 List<Student> list = null;29 Student stu = null;30 //获取对应时间的类型31 int type = parser.getEventType(); 32 while(type != XmlPullParser.END_DOCUMENT){33 //获取标签名称34 String tagname = parser.getName();35 switch(type){36 case XmlPullParser.START_TAG:37 //判断标签名称38 if("students".equals(tagname)){39 //创建集合40 list = new ArrayList<Student>();41 }else if("student".equals(tagname)){42 //创建对象43 stu = new Student();44 //获取ID属性值45 String id = parser.getAttributeValue(0);46 //赋值47 stu.setId(id);48 }else if("name".equals(tagname)){49 //获取标签体的文本50 String name = parser.nextText();51 //赋值52 stu.setName(name);53 }else if("age".equals(tagname)){54 //获取标签体的文本55 String age = parser.nextText();56 //赋值57 stu.setAge(Integer.parseInt(age));58 }59 break;60 case XmlPullParser.END_TAG:61 if("student".equals(tagname)){62 //将对象添加到集合中63 list.add(stu);64 stu = null;65 }66 break;67 default:68 break;69 }70 //向下走一步71 parser.next();72 //重新赋值73 type = parser.getEventType();74 }75 //6.输出76 System.out.println(list);77 }78 }
------------------------------------------------------------------------------------------------
pull解析器:序列化 将一个对象的数据 写入到xml文件中
1 import java.io.FileOutputStream; 2 import java.io.IOException; 3 4 import org.xmlpull.v1.XmlPullParserException; 5 import org.xmlpull.v1.XmlPullParserFactory; 6 import org.xmlpull.v1.XmlSerializer; 7 8 public class WriteXmlTest { 9 10 /**pull解析器:序列化 将一个对象的数据 写入到xml文件中11 * @param args12 * @throws XmlPullParserException 13 * @throws IOException 14 */15 public static void main(String[] args) throws XmlPullParserException, IOException {16 17 Student stu = new Student("s_001", "小飞飞", 23);18 //1.导包19 //2.获取解析器工厂20 XmlPullParserFactory factory = XmlPullParserFactory.newInstance();21 //3.根据工厂获取解析器对象22 XmlSerializer serializer = factory.newSerializer();23 //4.设置输出流24 serializer.setOutput(new FileOutputStream("src/sss.xml"),"utf-8");25 //5.写入26 //5.1写文档声明 参数1:encoding属性值,参数2:standalone属性值27 serializer.startDocument("utf-8", true);28 //5.2写入开始跟标签29 serializer.startTag(null, "students");30 for(int i=0; i <5; i++){31 //5.3写入student标签32 serializer.startTag(null, "student");33 34 serializer.attribute(null, "id", stu.getId());35 36 serializer.startTag(null, "name");37 serializer.text(stu.getName());38 serializer.endTag(null, "name");39 40 serializer.startTag(null, "age");41 serializer.text(String.valueOf(stu.getAge()));42 serializer.endTag(null, "age");43 44 serializer.endTag(null, "student");45 }46 //5.4写入结束标签47 serializer.endTag(null, "students");48 //5.5写入结束文档49 serializer.endDocument();50 //反应结果51 System.out.println("写入完成,请去查看!");52 }53 }
Student类
1 public class Student { 2 3 private String id; 4 private String name; 5 private int age; 6 7 public Student() { 8 super(); 9 }10 public Student(String id, String name, int age) {11 super();12 this.id = id;13 this.name = name;14 this.age = age;15 }16 /**17 * @return the id18 */19 public String getId() {20 return id;21 }22 /**23 * @param id the id to set24 */25 public void setId(String id) {26 this.id = id;27 }28 /**29 * @return the name30 */31 public String getName() {32 return name;33 }34 /**35 * @param name the name to set36 */37 public void setName(String name) {38 this.name = name;39 }40 /**41 * @return the age42 */43 public int getAge() {44 return age;45 }46 /**47 * @param age the age to set48 */49 public void setAge(int age) {50 this.age = age;51 }52 /* (non-Javadoc)53 * @see java.lang.Object#toString()54 */55 @Override56 public String toString() {57 return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";58 }59 60 }
student.xml
1 <?xml version='1.0' encoding='utf-8' ?> 2 3 <students> 4 <student id='s001'> 5 <name>zhangsan</name> 6 <age>23</age> 7 </student> 8 9 <student id="s002">10 <name>lisi</name>11 <age>24</age>12 </student>13 14 <student id="s003">15 <name>王五</name>16 <age>25</age>17 </student>18 19 </students>
导入的包名称(pull解析器jar包):
kxml2-2.3.0.jar
xmlpull_1_1_3_4c.jar
0 0
- [置顶]pull解析器: 反序列化与序列化
- 序列化与反序列
- 序列化与反序列
- plist解析和JSON序列化与反序列化(JSON解析),XML解析
- XML序列化与反序列化
- 对象序列化与反序列化
- 序列化与反序列化
- 转载:序列化与反序列化
- c#序列化与反序列化
- java序列化与反序列化
- XML序列化与反序列化
- 序列化与反序列化
- 序列化与反序列化
- C#序列化与反序列化
- java序列化与反序列化
- XML序列化与反序列化
- 再看序列化与反序列化
- 序列化与反序列化对象
- [置顶]XML 概述 (可扩展标记语言)
- [置顶]Java中 实现多线程成的三种方式(继承,实现,匿名内部类)
- [置顶]数据类型转换(面试题)
- [置顶]JDBC快速入门
- [置顶]单例设计模式 (代码实现)
- [置顶]pull解析器: 反序列化与序列化
- struts2出现Could not find action or result的错误原因
- [置顶]Servlet的生命周期+实现方式
- [置顶]Request 和 Response 原理
- [置顶]会话技术( Cookie ,Session)
- [置顶]android 四大组件之---Service
- #CentOS on Mac#4.WebBench测试TinyHttpd
- [置顶]showSetPwdDialog--自定义对话框
- [置顶]popupwindow展示