当前位置:主页 > java教程 > Java DOM4J

Java解析XML文件开源库DOM4J

发布:2023-03-06 13:30:01 59


本站收集了一篇相关的编程文章,网友益鹤轩根据主题投稿了本篇教程内容,涉及到Java DOM4J、Java解析xml文档、Java DOM4J相关内容,已被825网友关注,如果对知识点想更进一步了解可以在下方电子资料中获取。

Java DOM4J

XML解析-DOM4J

DOM4j是一個開源的,基於java的庫來解析XML文檔,它具有高度的靈活性,高性能和內存效率的API。DOM4J定義了幾個java類。以下是最常用的類:

  • Document:表示整個XML文檔。文檔Document對象是通常被稱為DOM樹。
  • Element:表示一個XML元素。Element對象有方法來操作其子元素,文本,屬性和名稱空間。
  • Attribute:表示元素的屬性。屬性有方法來獲取和設置屬性的值。它有父節點和屬性類型
  • Node:代表元素,屬性或處理指令。

常見DOM4J的方法:

  • SAXReader.read(xmlSource):構建XML源的DOM4J文檔
  • Document.getRootElement():得到的XML的根元素
  • Element.node(index):獲得在元素特定索引XML節點
  • Element.attributes():獲得一個元素的所有屬性
  • Node.valueOf(@Name):得到原件的給定名稱的屬性的值

解析DOM4J

使用DOM4J的步驟:

  • 導入XML相關的依賴(dom4j)
  • 創建一個SAXReader
  • 從文件或數據流創建一個文檔
  • 提取根節點
	private volatile static SystemConfig config = null;
	public static SystemConfig newInstance() {
        if (config == null) {
            synchronized (config) {
                if (config == null) {
                    config = new SystemConfig();
                    SAXReader reader = new SAXReader();
                    try {
                        document = reader.read(configPath);
                        root = document.getRootElement();
                    } catch (DocumentException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return config;
    }

查詢DOM4J

在根節點root下通過節點名稱key查找節點內容value

//獲取節點
root.element(key);
//獲取節點內容
root.element(key).getText();
root.element(key).getTextTrim();
root.element(key).getStringValue();

創建DOM4J

在根節點root下創建節點

Element element = root.addElement(key);
element.setText(value);
//將創建的節點添加進編譯後配置文件中
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("UTF-8");
try {
      XMLWriter writer = new XMLWriter(new FileOutputStream(configPath.getPath()), format);
      writer.write(document);
} catch (IOException e) {
      e.printStackTrace();
}

舉例:

package com.lmc.util;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.util.List;
public class SystemConfig {
    private volatile static SystemConfig config = null;
    private static URL configPath = SystemConfig.class.getClassLoader().getResource("SystemConfig.xml");
    private static Document document;
    private static Element root;
    private static final Logger LOGGER = Logger.getLogger(SystemConfig.class);
    /**
     * 單例模式,只對外創建一個LoadConfig
     * @return
     */
    public static SystemConfig newInstance() {
        if (config == null) {
            synchronized (SystemConfig.class) {
                if (config == null) {
                    config = new SystemConfig();
                    SAXReader reader = new SAXReader();
                    try {
                        document = reader.read(configPath);
                        root = document.getRootElement();
                    } catch (DocumentException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
        return config;
    }
    /**
     * 通过key返回value
     * @param key
     * @return
     */
    public String getValueByKey(String key) {
        String resultvalue = null;
        if (root.element(key) == null) {
            LOGGER.error("The key is not exist!! key: " + key);
            return null;
        } else {
            resultvalue = root.element(key).getStringValue();
            if (resultvalue == null) {
                LOGGER.error("get value by key FAIL!! key: " + key);
                return null;
            }
        }
        return resultvalue;
    }
    /**
     * 通過key來設置value如果key不存在,創建新的key。
     * @param value
     * @param key
     */
    public void setValueByKey(String value, String key) {
        Element element = root.addElement(key);
        element.setText(value);
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("UTF-8");
        try {
            XMLWriter writer = new XMLWriter(new FileOutputStream(configPath.getPath()), format);
            writer.write(document);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void str(String key) {
        Element element = root.element(key);
        System.out.println(element.getText());
        System.out.println(element.getStringValue());
        System.out.println(element.getTextTrim());
    }
}

到此这篇关于Java解析XML文件开源库DOM4J的文章就介绍到这了,更多相关Java DOM4J内容请搜索码农之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持码农之家!


参考资料

相关文章

网友讨论