public class PullXml {
public static void main(String[] args) throws Exception {
/**
* 将xml数据封装成对象,并将对象添加到集合中
*/
// 第一步:导包
// 第二步:创建解析器工厂
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
// 第三步:创建解析器对象
XmlPullParser parser = factory.newPullParser();
// 第四步:设置输入流
FileInputStream fis=new FileInputStream("student.xml");
parser.setInput(fis, "UTF-8");
// 定义事件类型
int type = 0;
//创建学生对象
Student student = null;
//创建学生对象集合
ArrayList<Student> students=null;
while ((type = parser.getEventType()) != XmlPullParser.END_DOCUMENT) {
//通过解析器对象获取标签名
String tagName = parser.getName();
//判断事件是什么类型,是开始标记还是结束标记,然后在开始标记里面做该做的事情,在结束标记里面做结束标记做的事情
switch (type) {
case XmlPullParser.START_TAG:
if("students".equals(tagName)){
students=new ArrayList<>();
}else if("student".equals(tagName)){
student=new Student();
//参数int代表第几个属性
String id = parser.getAttributeValue(0);
student.setId(id);
}else if("name".equals(tagName)){
String name = parser.nextText();
student.setName(name);
}else if("age".equals(tagName)){
int age = Integer.parseInt(parser.nextText());
student.setAge(age);
}else if("gender".equals(tagName)){
String gender = parser.nextText();
student.setGender(gender);
}
break;
case XmlPullParser.END_TAG:
if("student".equals(tagName)){
students.add(student);
}
break;
}
parser.next();
}
fis.close();
/**
* 将这个集合再写入student2.xml中
*/
//第一步:导包,上面已经进行该步
//第二步:创建解析器工厂,上面也已经做了
//第三步:创建序列化对象
XmlSerializer serializer = factory.newSerializer();
FileOutputStream fos=new FileOutputStream("student2.xml");
serializer.setOutput(fos, "utf-8");
serializer.startDocument("utf-8", true);
for (Student student2 : students) {
serializer.startTag(null, "student");
serializer.attribute(null, "id", student2.getId());
serializer.startTag(null, "name");
serializer.text(student2.getName());
serializer.endTag(null, "name");
serializer.startTag(null, "age");
serializer.text(String.valueOf(student2.getAge()));
serializer.endTag(null, "age");
serializer.startTag(null, "gender");
serializer.text(student2.getGender());
serializer.endTag(null, "gender");
serializer.endTag(null, "student");
}
serializer.endDocument();
fos.close();
}
} |
|