A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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();
        }

}

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马