最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java解析XML文件開源庫DOM4J

 更新時(shí)間:2023年01月11日 10:05:18   作者:李奈 - Leemon  
dom4j是一個Java的XML API,是jdom的升級品,用來讀寫XML文件的。dom4j是一個十分優(yōu)秀的JavaXML API,具有性能優(yōu)異、功能強(qiáng)大和極其易使用的特點(diǎn),它的性能超過sun公司官方的dom技術(shù),同時(shí)它也是一個開放源代碼的軟件

XML解析-DOM4J

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

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

常見DOM4J的方法:

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

解析DOM4J

使用DOM4J的步驟:

  • 導(dǎo)入XML相關(guān)的依賴(dom4j)
  • 創(chuàng)建一個SAXReader
  • 從文件或數(shù)據(jù)流創(chuàng)建一個文檔
  • 提取根節(jié)點(diǎn)
	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

在根節(jié)點(diǎn)root下通過節(jié)點(diǎn)名稱key查找節(jié)點(diǎn)內(nèi)容value

//獲取節(jié)點(diǎn)
root.element(key);
//獲取節(jié)點(diǎn)內(nèi)容
root.element(key).getText();
root.element(key).getTextTrim();
root.element(key).getStringValue();

創(chuàng)建DOM4J

在根節(jié)點(diǎn)root下創(chuàng)建節(jié)點(diǎn)

Element element = root.addElement(key);
element.setText(value);
//將創(chuàng)建的節(jié)點(diǎn)添加進(jìn)編譯後配置文件中
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);
    /**
     * 單例模式,只對外創(chuàng)建一個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來設(shè)置value如果key不存在,創(chuàng)建新的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());
    }
}

到此這篇關(guān)于Java解析XML文件開源庫DOM4J的文章就介紹到這了,更多相關(guān)Java DOM4J內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Spring Boot啟動過程完全解析(一)

    Spring Boot啟動過程完全解析(一)

    這篇文章主要介紹了Spring Boot啟動過程完全解析(一),需要的朋友可以參考下
    2017-04-04
  • Java解決約瑟夫問題代碼實(shí)例

    Java解決約瑟夫問題代碼實(shí)例

    這篇文章主要介紹了Java解決約瑟夫(環(huán))問題的代碼實(shí)例,決約瑟問題貌似經(jīng)常出現(xiàn)在面試題中,需要的朋友可以參考下
    2014-03-03
  • 網(wǎng)絡(luò)爬蟲案例解析

    網(wǎng)絡(luò)爬蟲案例解析

    本文主要介紹了網(wǎng)絡(luò)爬蟲的小案例。具有很好的參考價(jià)值。下面跟著小編一起來看下吧
    2017-03-03
  • IDEA上實(shí)現(xiàn)JDBC編程的方法步驟

    IDEA上實(shí)現(xiàn)JDBC編程的方法步驟

    本文主要介紹了IDEA上實(shí)現(xiàn)JDBC編程的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 一文教會你使用jmap和MAT進(jìn)行堆內(nèi)存溢出分析

    一文教會你使用jmap和MAT進(jìn)行堆內(nèi)存溢出分析

    本文介紹關(guān)于jmap和MAT的使用來進(jìn)行堆內(nèi)存溢出分析,因?yàn)檫@個內(nèi)存溢出是我們手動構(gòu)造出來的,查找比較簡單,真的到了生產(chǎn)上面需要我們仔細(xì)排除
    2021-09-09
  • Java將字符串String轉(zhuǎn)換為整型Int的兩種方式

    Java將字符串String轉(zhuǎn)換為整型Int的兩種方式

    這篇文章主要介紹了Java如何將字符串String轉(zhuǎn)換為整型Int,在 Java 中要將 String 類型轉(zhuǎn)化為 int 類型時(shí),需要使用 Integer 類中的 parseInt() 方法或者 valueOf() 方法進(jìn)行轉(zhuǎn)換,本文通過實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2023-04-04
  • Java基礎(chǔ)強(qiáng)化訓(xùn)練輸入錯誤即結(jié)束進(jìn)程

    Java基礎(chǔ)強(qiáng)化訓(xùn)練輸入錯誤即結(jié)束進(jìn)程

    本文主要介紹了Java編程的基礎(chǔ)知識強(qiáng)化應(yīng)用,文中實(shí)例涉及到了許多基礎(chǔ)知識,new對象,控制臺輸入,if語句等。很實(shí)用,需要的朋友可以參考下
    2017-09-09
  • SpringBoot設(shè)置接口超時(shí)的方法小結(jié)

    SpringBoot設(shè)置接口超時(shí)的方法小結(jié)

    這篇文章主要介紹了SpringBoot設(shè)置接口超時(shí)的方法小結(jié),包括配置文件,config配置類及相關(guān)示例代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Springboot與Maven多環(huán)境配置的解決方案

    Springboot與Maven多環(huán)境配置的解決方案

    多環(huán)境配置的解決方案有很多,我看到不少項(xiàng)目的多環(huán)境配置都是使用Maven來實(shí)現(xiàn)的,本文就實(shí)現(xiàn)Springboot與Maven多環(huán)境配置,感興趣的可以了解下
    2021-06-06
  • 詳解ZXing-core生成二維碼的方法并解析

    詳解ZXing-core生成二維碼的方法并解析

    本文給大家介紹ZXing-core生成二維碼的方法并解析,主要用到goggle發(fā)布的jar來實(shí)現(xiàn)二維碼功能,對此文感興趣的朋友一起學(xué)習(xí)吧
    2016-05-05

最新評論

南靖县| 桦川县| 荆门市| 井冈山市| 彭水| 朝阳县| 邳州市| 黄梅县| 永福县| 卫辉市| 德令哈市| 阳朔县| 河池市| 永春县| 家居| 六枝特区| 伊川县| 崇阳县| 华坪县| 宁夏| 商河县| 黄梅县| 洛扎县| 镇安县| 边坝县| 栾城县| 新疆| 太康县| 乌拉特中旗| 神池县| 辽阳县| 陇南市| 西青区| 登封市| 湾仔区| 裕民县| 东台市| 孝义市| 旬阳县| 南雄市| 米泉市|