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();
        }
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章