• Dom4J读写xml


    解析读取XML

    public static void main(String[] args) {
            //1获取SaxReader对象
            SAXReader reader=new SAXReader();
            try {
                //2使用Saxrreader对象加载xml文件,返回Document对象
                Document document=reader.read(new File("student.xml"));
                
                //3使用document对象或根元素
                Element rootele=document.getRootElement();
                
                //4获取子元素的集合(获取的是student子元素的集合)
                List<Element> lsstu_ele=rootele.elements("student");
                
                System.out.println("student元素的个数:"+lsstu_ele.size());
                //遍历student元素
                for (Element stuele : lsstu_ele) {
                    /***********************************
                    //获取student元素下的子元素
                    Element sid_ele=stuele.element("sid");
                    Element sname_ele=stuele.element("sname");
                    Element sex_ele=stuele.element("sex");
                    Element address_ele=stuele.element("address");
                    Element age_ele=stuele.element("age");
                    
                    //获取每个子元素的文本内容
                    System.out.println("编号:"+sid_ele.getText());
                    System.out.println("姓名:"+sname_ele.getText());
                    System.out.println("性别:"+sex_ele.getText());
                    System.out.println("地址:"+address_ele.getText());
                    System.out.println("年龄:"+age_ele.getText());
                    System.out.println("========================");
                    **************************************/
                    //获取每个子元素的文本内容
                    System.out.println("编号:"+stuele.elementText("sid"));
                    System.out.println("姓名:"+stuele.elementText("sname"));
                    System.out.println("性别:"+stuele.elementText("sex"));
                    System.out.println("地址:"+stuele.elementText("address"));
                    System.out.println("年龄:"+stuele.elementText("age"));
                    System.out.println("========================");
                }
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    向xml文件中添加节点并写入文件保存;

    public static void main(String[] args) {
            //1创建SaxReader对象
            SAXReader reader=new SAXReader();
            
            try {
                //2读取xml文档,并返回document对象
                Document document=reader.read(new File("student.xml"));
                
                //3获取根元素
                Element rootele=document.getRootElement();
                
                //4在根元素下添加student子元素
                Element st_ele=rootele.addElement("student");
                
                //在新增的student元素下添加其他子元素
                Element sid_ele=st_ele.addElement("sid");
                Element sname_ele=st_ele.addElement("sname");
                Element sex_ele=st_ele.addElement("sex");
                Element address_ele=st_ele.addElement("address");
                Element age_ele=st_ele.addElement("age");
                
                //在每个子元素下添加内容
                Scanner sc=new Scanner(System.in);
                
                System.out.println("输入编号:");
                sid_ele.setText(sc.next());
                
                System.out.println("输入姓名:");
                sname_ele.setText(sc.next());
                
                System.out.println("输入性别:");
                sex_ele.setText(sc.next());
                
                System.out.println("输入地址:");
                address_ele.setText(sc.next());
                
                System.out.println("输入年龄:");
                age_ele.setText(sc.next());
                
                //创建字节输出流对象
                FileOutputStream fout=new FileOutputStream("student.xml");
                
                //创建缓冲区字符输出流对象
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8"));
                
                //写文档到xml文件
                document.write(bw);
                bw.flush();
                bw.close();
                System.out.println("增加成功!");
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    修改xml 文件中的节点并写入文件保存;

    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            //1创建SaxReader对象
            SAXReader reader=new SAXReader();
            
            try {
                //2读取xml文档,并返回document对象
                Document document=reader.read(new File("student.xml"));
                
                //3获取根元素
                Element rootele=document.getRootElement();
                
                //4获取student子元素的集合
                List<Element> lsst_ele=rootele.elements("student");
                
                System.out.println("请输入要修改的学生编号:");
                String sid=sc.next();
                
                for (Element stu_ele : lsst_ele) {
                    if(stu_ele.elementText("sid").equals(sid)){
                        System.out.println("输入姓名:");
                        stu_ele.element("sname").setText(sc.next());
                        
                        System.out.println("输入性别:");
                        stu_ele.element("sex").setText(sc.next());
                        
                        System.out.println("输入地址:");
                        stu_ele.element("address").setText(sc.next());
                        
                        System.out.println("输入年龄:");
                        stu_ele.element("age").setText(sc.next());
                        break;
                    }
                }
                
                //创建字节输出流对象
                FileOutputStream fout=new FileOutputStream("student.xml");
                
                //创建缓冲区字符输出流对象
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8"));
                
                //写文档到xml文件
                document.write(bw);
                bw.flush();
                bw.close();
                System.out.println("修改成功!");
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

    删除xml文件中的节点

    public static void main(String[] args) {
            Scanner sc=new Scanner(System.in);
            //1创建SaxReader对象
            SAXReader reader=new SAXReader();
            
            try {
                //2读取xml文档,并返回document对象
                Document document=reader.read(new File("student.xml"));
                
                //3获取根元素
                Element rootele=document.getRootElement();
                
                //获取要移除的学生编号
                System.out.println("请输入要删除的学生编号:");
                String sid=sc.next();
                
                //获取student元素的集合
                List<Element> lsstu_ele=rootele.elements("student");
                for (Element stu_ele : lsstu_ele) {
                    //在元素中查找学生编号内容是否与输入的一致
                    if(stu_ele.elementText("sid").equals(sid)){
                        rootele.remove(stu_ele);//删除整个student元素
                        System.out.println("元素删除成功!");
                        break;
                    }
                }
                //创建字节输出流对象
                FileOutputStream fout=new FileOutputStream("student.xml");
                
                //创建缓冲区字符输出流对象
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(fout, "utf-8"));
                
                //写文档到xml文件
                document.write(bw);
                bw.flush();
                bw.close();
                System.out.println("移除成功!");
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

     xml读写的工具类方法示例

        /**
         * 将Document对象写入到xml文件
         * @throws IOException 
         * */
        public static void XmlToFile(Document doc) throws IOException{
            
                //创建字节输出流对象
                FileOutputStream fout=new FileOutputStream(new File("student.xml"));
                //创建字节流缓冲区,加快写出速度
                BufferedOutputStream bout=new BufferedOutputStream(fout);
                
                //创建字符输出流对象
                BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(bout, "utf-8"));
                
                doc.write(bw);
                
                bw.flush();
                bw.close();
                System.out.println("写xml文件成功");
        }
        /**
         * 从xml文件中获取学生的对象集合
         * */
        public static List<Student> fileToList(){
            SAXReader reader=new SAXReader();
            List<Student> lsst=new ArrayList<Student>();
            
            try {
                Document doc=reader.read(new File("student.xml"));
                
                //获取根元素
                Element root_ele=doc.getRootElement();
                
                
                //从xml文件获取student子元素集合
                List<Element> lsst_ele=root_ele.elements("student");
                if(lsst_ele!=null&&!lsst_ele.isEmpty()){//有student子元素存在
                    for (Element stu_ele : lsst_ele) {
                        Student st=new Student();
                        st.setSid(stu_ele.elementText("sid"));
                        st.setSname(stu_ele.elementText("sname"));
                        st.setSex(stu_ele.elementText("sex"));
                        st.setAddress(stu_ele.elementText("address"));
                        st.setAge(Integer.parseInt(stu_ele.elementText("age")));
                        
                        lsst.add(st);//将学生对象加入到集合中
                    }
                }
            } catch (NumberFormatException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return lsst;
        }
  • 相关阅读:
    JavaScript教程——JavaScript 的基本语法(标识符)
    ECMAScript 6 入门——ES6 声明变量的六种方法
    JavaScript教程——数据类型概述
    对称机密算法与非对称机密算法
    C语言提高 (2) 第二天 用指针对字符串进行操作
    C语言提高 (1) 第一天 数据类型本质与内存四区
    关于内存地址和内存空间的理解(转)
    为什么对数组处理的函数需要传递数组长度
    Unicode编码,解释UCS、UTF、BMP、BOM等名词
    上海
  • 原文地址:https://www.cnblogs.com/xh_Blog/p/6599804.html
Copyright © 2020-2023  润新知