dom4j如何解析xml,dom4j如何对xml文档的节点进行增删改查操作

DOM4J是什么

DOM4J是针对Java开发人员专门提供的XML文档解析规范,它不同与DOM,但与DOM相似。DOM4J针对Java开发人员而设计,所以对于Java开发人员来说,使用DOM4J要比使用DOM更加方便。

dom4j解析xml文件的步骤:

  1. 使用SAXReader来获取document对象,document对象代表整个xml文档,所以必须先获取.
  2. 获取完成后就可以对xml文件进行操作了,比如:增删改查操作.
  3. 最后,如果进行了增删改操作就必须保存document对象到xml文档中.

下面开始介绍dom4j的使用方法:

导jar包的操作省略,本文章只讲知识点

1. DOM4J获取Document对象

  使用DOM4J来加载XML文档,需要先获取SAXReader对象,然后通过SAXReader对象的read()方法来加载XML文档:
  

        //创建解析器
        SAXReader reader = new SAXReader();
//      reader.setValidation(true);
        //得到document
        Document doc = reader.read("src/students.xml");

2. DOM4J创建Document对象

 DocumentHelper类有很多的createXXX()方法,用来创建各种Node对象。

Document doc = DocumentHelper.createDocument();

涉及的相关方法(包括对xml文档常用的增删改查方法):

  • Element getRootElement():Document的方法,用来获取根元素;
  • List elements():Element的方法,用来获取所有子元素;
  • String attributeValue(String name):Element的方法,用来获取指定名字的属性值;
  • Element element(String name):Element的方法,用来获取第一个指定名字的子元素;
  • Element elementText(String name):Element的方法,用来获取第一个指定名字的子元素的文- 本内容。
  • Element addElement(String name):Element的方法,为当前元素添加指定名字子元素。返回值为新建元素对象;
  • setText(String text):Element的方法,为当前元素设置文本内容。
  • addAttribute(String name, String value):Element的方法,为当前元素添加属性。
  • boolean remove(Element e):Element和Document的方法,移除指定子元素;
  • Element getParent():获取父元素,根元素的父元素为null。
  • DocumentHelper.createDocument():创建Document对象;
  • DocumentHelper.createElement(String name):创建指定名称的Element元素。
  • int indexOf(Node node):Branch的方法,查找指定节点,在当前Branch的子节点集合中的下标位置。

3. DOM4J保存Document对象

保存Document对象需要使用XMLWriter对象的write()方法来完成,在创建XMLWriter时还可以为其指定XML文档的格式(缩进字符串以及是否换行),这需要使用OutputFormat来指定。

        doc.addDocType("students", "", "students.dtd");
        OutputFormat format = new OutputFormat("\t", true);
        format.setEncoding("UTF-8");
        //回写xml
        XMLWriter writer = new XMLWriter(new FileWriter(xmlName), format);
        writer.write(doc);
        writer.close();

4. 将两个方法封装成静态方法:

//返回document
    public static Document getDocument(String path) {
        try {
            //创建解析器
            SAXReader reader = new SAXReader();
            //得到document
            Document document = reader.read(path);
            return document;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    //回写xml的方法
    public static void xmlWriters(String path,Document document) {
        try {
            OutputFormat format = OutputFormat.createPrettyPrint();
            XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(path), format);
            xmlWriter.write(document);
            xmlWriter.close();
        }catch(Exception e) {
            e.printStackTrace();
        }
    }

猜你喜欢

转载自blog.csdn.net/qq_33442160/article/details/81674890