Java从零开始学四十三(DOM4j解析XML)

一、创建XML

// 建立XML

    public static void gernatorXML() {

        // 创建Document对象

        Document doc = DocumentHelper.createDocument();

        // 创建根节点students

        Element studentsElement = doc.addElement("students");

        // 创建子节点student

        Element studentElement1 = studentsElement.addElement("student");

        // 添加ID属性

        studentElement1.addAttribute("id", "1001");

        // 添加子节点

        studentElement1.addElement("name").setText("张三");

        studentElement1.addElement("age").setText("18");

        studentElement1.addElement("sex").setText("男");

        studentElement1.addElement("phone").setText("13800138000");

        studentElement1.addElement("address").setText("深圳宝安");



        // 再创建同样的2个student节点

        Element studentElement2 = studentsElement.addElement("student");

        // 添加ID属性

        studentElement2.addAttribute("id", "10012");

        // 添加子节点

        studentElement2.addElement("name").setText("李四");

        studentElement2.addElement("age").setText("19");

        studentElement2.addElement("sex").setText("女");

        studentElement2.addElement("phone").setText("13412369854");

        studentElement2.addElement("address").setText("上海");

        // 再创建同样的2个student节点

        Element studentElement3 = studentsElement.addElement("student");

        // 添加ID属性

        studentElement3.addAttribute("id", "10013");

        // 添加子节点

        studentElement3.addElement("name").setText("王五");

        studentElement3.addElement("age").setText("25");

        studentElement3.addElement("sex").setText("女");

        studentElement3.addElement("phone").setText("13410110104");

        studentElement3.addElement("address").setText("广东");



        try {

            // 创建XML 将Document写入XML

            // 设置格式

            OutputFormat format = OutputFormat.createPrettyPrint();

            // 设置字符编码也可以设置为gb2312或者gbk

            format.setEncoding("utf-8");

            // 输入

            XMLWriter writer = new XMLWriter(

                    new FileWriter("xml/students.xml"), format);



            // 写入文档

            writer.write(doc);

            // 关闭流

            writer.close();

            // 输出提示

            System.out.println("======写入成功=======");

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

    }

 

二、解析XML

    // 读取XML

    public static void getXML() {



        try {

            // 读取XML

            SAXReader reader = new SAXReader();

            Document doc = reader.read("xml/students.xml");

            // 获取根节点

            Element root = doc.getRootElement();

            // 获取子节点集合

            List<Element> stulList = root.elements();

            // 遍历

            for (Element ele : stulList) {

                // 获取属性

                String id = ele.attributeValue("id");

                System.out.println("学生ID: " + id);

                // 获取子节点的文本内容 name

                String name = ele.elementText("name");

                // age年龄

                String age = ele.elementText("age");

                // sex

                String sex = ele.elementTextTrim("sex");

                // phone

                String phone = ele.elementTextTrim("phone");

                // address

                String address = ele.elementTextTrim("address");

                System.out.println("姓名:" + name + "\t年龄:  " + age + "\t 性别:  "

                        + sex + "\t\t电话:" + phone + "\t\t地址:  " + address);

            }



        } catch (DocumentException e) {

            e.printStackTrace();

        }



    }

 

三、增加节点

//增加新的节点

    public static void addXML(){

        

        try {

            //读取XML创建解析器

            SAXReader reader=new SAXReader();

            //创建Document对象

            Document doc=reader.read("xml/students.xml");

            //获取根节点

            Element root=doc.getRootElement();

            //创建新的节点

            Element student=root.addElement("student");

            //添加属性

            student.addAttribute("id", "10020");

            //创建子节点

            student.addElement("name").setText("张三丰");

            student.addElement("age").setText("108");

            student.addElement("sex").setText("男");

            student.addElement("phone").setText("13800138001");

            student.addElement("address").setText("武当山");

            //写入XML

            //设置字符编码和格式

            OutputFormat format=new OutputFormat();

            format.setEncoding("utf-8");

            //创建输出流

            XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);

            //写入Document

            writer.write(doc);

            //关闭流

            writer.close();

            //给出提示

            System.out.println("======增加成功=======");

            

        } catch (DocumentException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

        

    }

 

四、修改节点

//修改节点内容根据 id10013将王五的姓名=王小五,年龄30,性别:男,电话:138000138000,地址:北京

    public static void modify(){

        

        try {

            //创建SAXReader解析器

            SAXReader reader=new SAXReader();

            //创建Document

            Document doc=reader.read("xml/students.xml");

            //找到根节点

            Element root=doc.getRootElement();

            //子节点集合

            List<Element> studentList=root.elements();

            //遍历查找

            for (Element ele : studentList) {

                

                if(ele.attributeValue("id").equals("10013")){

                    ele.element("name").setText("王小五");

                    ele.element("age").setText("30");

                    ele.element("sex").setText("男");

                    ele.element("phone").setText("138000138000");

                    ele.element("address").setText("北京");

                    

                }

            }

                //写入XML

                //设置字符格式和编码

                OutputFormat format=new OutputFormat();

                format.setEncoding("utf-8");

                XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);

                //将Document写入

                writer.write(doc);

                //关闭流

                writer.close();

                //给出提示

                System.out.println("====修改成功====");

                

            

            

        } catch (DocumentException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

五、删除节点XML

/删除节点 删除王小五的节点

    public static void delete(){

        

        try {

            //创建SAXReader 解析器

            SAXReader reader=new SAXReader();

            //创建Document对象

            Document doc=reader.read("xml/students.xml");

            //获取根节点

            Element root=doc.getRootElement();

            //集合

            List<Element> stuList=root.elements();

            //遍历

            for (Element ele : stuList) {

                if(ele.attributeValue("id").equals("10013")){

                    //获取父节点,并删除这个节点

                    ele.getParent().remove(ele);

                }

            }

            //写入XML

            //设置字符编码格式

            OutputFormat format =new OutputFormat();

            format.setEncoding("utf-8");

            //输出流

            XMLWriter writer=new XMLWriter(new FileWriter("xml/students.xml"), format);

            writer.write(doc);

            writer.close();

            System.out.println("===删除成功===");

            

            

            

            

        } catch (DocumentException e) {

            e.printStackTrace();

        } catch (IOException e) {

            e.printStackTrace();

        }

    }

 

你可能感兴趣的:(dom4j)