dom4j_笔记

一,创建xml文档

//创建一个xml

    public void createXML() throws IOException{

        Document document = DocumentHelper.createDocument();

        //document创建根节点

        Element root  =  document.addElement("struts");

   

        Element element_package = root.addElement("package");

        //设置属性值

        element_package.addAttribute("name", "base");

        element_package.addAttribute("namespace", "/");

        element_package.addAttribute("extends", "struts-default");

       

        Element element_action = element_package.addElement("action");

        element_action.addAttribute("name", "empAction_show");

        element_action.addAttribute("class", "empAction");

        element_action.addAttribute("method", "show");

       

        Element element_result = element_action.addElement("result");

        element_result.addAttribute("name", "success");

        element_result.addAttribute("type", "redirect");

        //设置标签内容

        element_result.setText("/show.jsp");

       

        Element element_action2 = element_package.addElement("action");

        element_action2.addAttribute("name", "empAction_login");

        element_action2.addAttribute("class", "empAction");

        element_action2.addAttribute("method", "login");

       

        Element element_result2 = element_action2.addElement("result");

        element_result2.addAttribute("name", "login");

        element_result2.addAttribute("type", "dispacher");

        //设置标签内容

        element_result2.setText("/login.jsp");

       

        //用一定的格式输出

        OutputFormat format = OutputFormat.createPrettyPrint();

        format.setEncoding("gbk");//设置编码防止中文乱码

        XMLWriter writer = new XMLWriter(new FileWriter(new File("src/struts.xml")),format);

        writer.write(document);

        writer.close();

       

    }

二,读xml文档,返回document对象

    //读取一个xml文档,返回一个document对象

    public Document readXML() throws DocumentException{

        //实例一个reader

        //可以是dom sax ,由于两者实现的接口是一样的,所以实例化也是一样的

        SAXReader reader = new SAXReader();

        //读入一个xml,返回一个document,在这里的位置默认是和webroot是同一级别

        //可以使用WebRoot/XXX.xml来得到

        Document document = reader.read(new File("src/struts.xml"));

        return document ;

    }

 

三,得到根节点

//得到根节点

    public Element getRoot(Document document){

        return document.getRootElement();

    }

 

四,新增节点和数据

注意:对于一个存在的xml文件进行增加或者修改,一定要在最后把修改后的document重新写入到xml文件中,要不修改的内容不会生效

//创建一个xml

    public void createXML() throws IOException{

        //将文档读进来

         SAXReader reader = new SAXReader();

Document document = reader.read(new File("src/struts.xml"));

 

        //得到根节点

        Element root  =  document.getRootElement();

   

    //因为addElement() 返回的是一个Element,所以可以多级一起添加

    //root.addElement("package").addElement("action").addElement("result")

        Element element_package = root.addElement("package");

        //设置属性值

        element_package.addAttribute("name", "base");

        element_package.addAttribute("namespace", "/");

        element_package.addAttribute("extends", "struts-default");

       

        Element element_action = element_package.addElement("action");

        element_action.addAttribute("name", "empAction_show");

        element_action.addAttribute("class", "empAction");

        element_action.addAttribute("method", "show");

       

        Element element_result = element_action.addElement("result");

        element_result.addAttribute("name", "success");

        element_result.addAttribute("type", "redirect");

        //设置标签内容

        element_result.setText("/show.jsp");

       

        //要重新写到修改的xml文件中,要不不会生效

        OutputFormat format = OutputFormat.createPrettyPrint();

        format.setEncoding("gbk");//设置编码防止中文乱码

        XMLWriter writer = new XMLWriter(new FileWriter(new File("src/struts.xml")),format);

        writer.write(document);

        writer.close();

       

    }

 

五,控制台输出xml

SAXReader reader = new SAXReader();

Document document = reader.read(new File("src/struts.xml"));

OutputFormat outputFormat = OutputFormat.createPrettyPrint();

outputFormat.setEncoding("gbk");

//输出流用System.out

XMLWriter writer = new XMLWriter(System.out,outputFormat);

writer.write(document);

writer.close();

 

六,写入到一个xml文件

SAXReader reader = new SAXReader();

Document document = reader.read(new File("src/struts.xml"));

OutputFormat outputFormat = OutputFormat.createPrettyPrint();

outputFormat.setEncoding("gbk");

//和上面的在控制太输出是一样的,只是输出流是输出到一个xml文件中

XMLWriter writer = new XMLWriter(new FileWriter(new File("WebRoot/person.xml")),outputFormat);

writer.write(document);

writer.close();

 

七,遍历节点

    //遍历节点

    public void loopNodes() throws DocumentException{

        SAXReader reader = new SAXReader();

        Document document = reader.read(new File("src/struts.xml"));

       

        Element root = document.getRootElement();

        //循环根节点下的直接子节点

        for(Iterator iter = root.elementIterator();iter.hasNext();){

            Element element = (Element) iter.next();

            System.out.println(element.getName());

        }

    }

 

八,修改节点属性

/ ——从根节进行选择
//——选择文档中相吻合的节而不管其在文档的何处
. ——选择当前节
..——当前节的父节
@——选择属性

注意:对于一个存在的xml文件进行增加或者修改,一定要在最后把修改后的document重新写入到xml文件中,要不修改的内容不会生效

    public void alterNode() throws DocumentException, IOException{

        SAXReader reader = new SAXReader();

        Document document = reader.read(new File("src/struts.xml"));

       

        //得到一个节点

//      Node node = document.selectSingleNode("//action");

//      String methodName = node.valueOf("@method");

       

        //得到多个节点

        List list = document.selectNodes("/struts/package/action");

        for (Iterator iter = list.iterator() ; iter.hasNext();) {

            Element element =(Element) iter.next();

            //得到节点的属性:element.attribute("..");

            //得到节点下的子节点:element.element("..");

              //得到节点的父节点:elements.getParent();

            if (element.attribute("method").getValue().equals("show")) {

                element.attribute("method").setValue("showEmps");

                break;

            }

        }

       

        //查找节点下的属性

        List list2 = document.selectNodes("/struts/package/action/@name");

        for (Iterator iter = list2.iterator() ; iter.hasNext();) {

            Attribute attribute = (Attribute) iter.next();

            if (attribute.getValue().equals("empAction_show")) {

                attribute.setValue("empAction_showEmps");

                break;

            }

        }

       

        //一定要记得修改后把document从新写入到xml文件中

        OutputFormat format = OutputFormat.createPrettyPrint();

        format.setEncoding("gbk");//设置编码防止中文乱码

        XMLWriter writer = new XMLWriter(new FileWriter(new File("src/struts.xml")),format);

        writer.write(document);

        writer.close();

   

    }

 

九,删除节点

      //删除一个节点

      List list2 =document.selectNodes("/struts/package/action/result");

      for (Iterator iter = list2.iterator();iter.hasNext(); ) {

          Element element =(Element) iter.next();

           //得到节点的属性:element.attribute("..");

            //得到节点下的子节点:element.element("..");

              //得到节点的父节点:elements.getParent();

          if(element.attribute("name").getValue().equals("/success.jsp")){

              //注意,要删除的话,只能是父节点删除直接子节点,而不是间接子节点                       root.remove(element.getParent());

          }

      }

 

注意:对于删除节点和新增以及修改节点是一样的,也要在最后重新写出到修改的xml文件中

你可能感兴趣的:(dom4j_笔记)