Java【XML 配置文件解析】

前言

? ? ? ? 最近考試周忙得要死,但我卻不緊不慢,還有三天復習時間,考試科目幾乎都還沒學呢。今天更新一個算是工具類-XML文件的解析,感覺還是挺有用的,之后可以融進自己的項目里。

XML 配置文件解析

0、導入依賴

有點像我之前爬蟲學的 Jsoup 一樣,只不過 Jsoup 可以用來解析 HTML,這個是解析 XML。

 <dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.1</version></dependency>

1、配置文件的兩種讀取方式

1.1、從同級目錄讀取

語法:

類名.class.getResourceAsStream("配置文件名")

案例:

編寫一個數據庫配置文件,放到和讀取類同級的目錄下:

username=root
password=123456
url=jdbc:mysql://localhost:3306/test
driver_Class5=com.mysql.jdbc.Driver
driver_Class8=com.mysql.cj.jdbc.Driver

讀取:?

public static void readCurrentDir(String propertyName) throws IOException {// todo 加載同級目錄下的配置文件// 1. 加載配置文件,返回輸入流 (底層是通過類加載器)InputStream in = XMLParser.class.getResourceAsStream("db.properties");// 2. 實例化 Properties 工具類Properties p = new Properties();// 3. 調用 load 方法加載輸入流p.load(in);// 通過 getProperty 方法輸出配置文件中指定key的內容System.out.println("username: "+p.getProperty("username"));System.out.println("password: "+p.getProperty("password"));}

2、從根目錄下(resources)讀取

繼續把上面的配置文件放到 resources 目錄下:

public static void readFromResources() throws IOException {// todo 加載同級目錄下的配置文件// 1. 加載配置文件,返回輸入流 (底層是通過類加載器)InputStream in = XMLParser.class.getResourceAsStream("/db.properties");// 2. 實例化 Properties 工具類Properties p = new Properties();// 3. 調用 load 方法加載輸入流p.load(in);// 通過 getProperty 方法輸出配置文件中指定key的內容System.out.println("username: "+p.getProperty("username"));System.out.println("password: "+p.getProperty("password"));}

DOM4J是 dom4j.org 出品的一個開源 XML 解析包。DOM4J應用于 Java 平臺,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP。

2、XML 文件的解析

有了上面的鋪墊,我們就可以把不同位置的 XML 文件都讀取進來了,接下來介紹常用的簡單解析方法。

Dom4j?解析過程

  1. 創建SAXReader對象。
  2. 調用SAXReader對象的 read() 方法,將XML文件讀入內存,并返回一個Document對象。
  3. 通過Document對象的 getRootElement() 方法獲取XML文件中的根節點(是一個 Element 對象)。
  4. 通過根節點的靜態方法 elements() 獲得一個子節點集合。
  5. 遍歷根節點的所有子節點,獲取需要的元素節點及其屬性和文本內容。

打印 xml 文件內容的語法:

InputStream in = XMLParser.class.getResourceAsStream("/books.xml");SAXReader reader = new SAXReader();Document doc = reader.read(in);System.out.println(doc.asXML());

下面案例用到的 XML 文件。

<bookstore><book category="love"><title lang="en">黃金時代</title><author>王小波</author><year>1991</year><price>30.00</price></book>
</bookstore>

2.1、獲取標簽內容

public static void dom4j_forEach() throws DocumentException {InputStream in = XMLParser.class.getResourceAsStream("/books.xml");SAXReader reader = new SAXReader();Document doc = reader.read(in);Element root = doc.getRootElement();List<Element> books = root.elements();for (Element book : books) {System.out.println("category: "+book.elementText("category"));System.out.println("title: "+book.elementText("title"));System.out.println("author: "+book.elementText("author"));}}

2.2、添加一個子標簽

public static void dom4j_addSubNode() throws DocumentException {InputStream in = XMLParser.class.getResourceAsStream("/books.xml");SAXReader reader = new SAXReader();Document doc = reader.read(in);Element root = doc.getRootElement();List<Element> books = root.elements();for (Element book : books) {Element publish = book.addElement("publish");publish.addAttribute("name","publishTime");publish.setText("2003");}System.out.println(doc.asXML());}

后面用到的時候有什么新用法在來更新吧。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/162674.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/162674.shtml
英文地址,請注明出處:http://en.pswp.cn/news/162674.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

海康攝像頭ip地址設置方法

海康攝像頭是當前市場上非常受歡迎的一種監控設備&#xff0c;其可以在各種場合下發揮出極佳的作用。不過&#xff0c;對于初次使用該設備的人來說&#xff0c;設置其ip地址往往比較困難。虎觀代理小二二將會詳細介紹海康攝像頭ip地址設置的具體步驟&#xff0c;幫助大家輕松解…

PS右邊的圖層窗口沒有顯示出來?

問題描述&#xff1a;PS右邊的圖層窗口沒有顯示出來&#xff1f; 解決步驟&#xff1a; 鍵盤F7快捷鍵即可調出來。

企業軟件定制開發的優勢|app小程序網站搭建

企業軟件定制開發的優勢|app小程序網站搭建 企業軟件定制開發是一種根據企業特定需求開發定制化軟件的服務。相比于購買現成的軟件產品&#xff0c;企業軟件定制開發具有許多優勢。 1.企業軟件定制開發可以滿足企業獨特需求。每個企業都有自己獨特的業務流程和需求&#xff0c;…

在 Redis 中使用 JSON 文檔:命令行界面(CLI)和 Navicat 集成

Redis&#xff0c;因其極高的性能而聞名&#xff0c;是一款多功能的 NoSQL 數據庫&#xff0c;擅長處理鍵值對。雖然 Redis主要用于處理簡單數據結構&#xff0c;但是同樣支持更多復雜的數據類型&#xff0c;如列表、集合甚至是 JSON 文件。在本文&#xff0c;我們將深入到 Red…

SAP LU04記賬更改通知單創建轉儲單報錯:L3094 記帳修改沒有份存在

解決辦法&#xff1a; 使用事務碼LU02&#xff0c;修改過賬更改狀態&#xff0c;將過賬更改狀態改為U&#xff0c;強制關閉 1. LU04 查找記賬更改通知單號 2. 事務碼LU02修改狀態 這個時候再用LU04去查看的時候&#xff0c;就不會再顯示了

技術短視頻賬號矩陣seo系統--源頭開發---saas工具

專注短視頻賬號矩陣系統源頭開發---saas營銷化工具&#xff0c;目前我們作為一家純技術開發團隊目前已經專注打磨開發這套系統企業版/線下版兩個版本的saas營銷拓客工具已經3年了&#xff0c;本套系統邏輯主要是從ai智能批量剪輯、賬號矩陣全托管發布、私信觸單收錄、文案ai智能…

網絡安全等級保護2.0國家標準

等級保護2.0標準體系主要標準如下&#xff1a;1.網絡安全等級保護條例2.計算機信息系統安全保護等級劃分準則3.網絡安全等級保護實施指南4.網絡安全等級保護定級指南5.網絡安全等級保護基本要求6.網絡安全等級保護設計技術要求7.網絡安全等級保護測評要求8.網絡安全等級保護測評…

【AGC】云存儲服務端使用方法

【集成準備】 1、Python環境配置 下載Python和PyCharm并安裝。 ? 使用安裝的python本身作為解釋器。 ? 安裝AGC Python SDK。 ?云存儲包安裝完成。 ? 2、AGC環境配置 在AGC創建項目和應用 ? 開通云存儲服務。 返回項目設置界面&#xff0c;選擇Server SDK 頁簽…

雙系統Ubuntu-22.04.3安裝編譯kaldi

Ubuntu物理內存要求85-100G以上&#xff0c;運行內存5-6G以上&#xff08;如果第一次安裝的Ubuntu物理內存不夠&#xff0c;請勿進行擴容&#xff0c;擴容易出現黑屏、藍屏、死機的情況&#xff0c;應該卸載Ubuntu重新安裝&#xff0c;在安裝過程中進行內存分配&#xff1b;運行…

4.22每日一題(累次積分的計算:交換次序)

注&#xff1a;因為 是積不出的函數&#xff0c;所以先不用算&#xff0c;最后發現&#xff0c;出現dx與dy可以相互抵消&#xff0c;即可算出答案

為企業解決設備全生命周期需求,凌雄科技凸顯DaaS增長價值

企業成長離不開投資&#xff0c;但毫無疑問的是&#xff0c;投資最有價值的部分在業務。相比之下&#xff0c;諸如辦公設備之類的固定資產投資&#xff0c;很容易變成企業現金流的吞噬者。從購買、運維到保養、折舊、回收&#xff0c;現代企業在越來越大的辦公設備規模面前&…

工具 | docker刪除不使用的容器

工具 | docker刪除不使用的容器 Docker 清理命令

數據庫|TiDB v7.1.0 資源管控功能是如何降低運維難度和成本

目錄 一、前言 二、資源管控流程圖 三、資源管控 (Resource Control)測試 1&#xff09;測試集群環境 2&#xff09;Request Unit (RU) 概念 3&#xff09;資源管控參數 4&#xff09;評估實際負載所需容量 4.1 根據實際負載估算容量 方法一 or: 方法二 4.2 基于硬件…

鴻蒙原生應用/元服務開發-AGC分發如何配置簽名信息

使用制作的私鑰&#xff08;.p12&#xff09;文件、在AGC申請的證書文件和Profile&#xff08;.p7b&#xff09;文件&#xff0c;在DevEco Studio配置工程的簽名信息&#xff0c;以構建攜帶發布簽名信息的APP。 1.打開DevEco Studio&#xff0c;菜單選擇“File > Project S…

va-Q-tec實現溫度敏感產品運輸過程質量控制溫控無憂

摘要&#xff1a;溫度敏感產品運輸對供應鏈全流程的溫度質量要求較高&#xff0c;往往需要借助特殊的溫濕度監測技術產品。va-Q-tec與虹科Comet合作&#xff0c;采用虹科Comet的U系列溫度記錄儀&#xff0c;為集裝箱運輸過程提供完整的溫控包裝解決方案。 一、客戶背景 va-Q-…

鈷電解液中凈化除鎳除銅樹脂

#鈷電解液中凈化除鎳除銅樹脂 鈷是生產各種合金及電池不可或缺的原材料&#xff0c;鈷資源供給主要來自于大型銅礦和鎳礦的伴生開采&#xff0c;鈷的主要應用領域為動力電池、3C消費電池、各種耐熱合金、硬質合金、防腐合金、磁性合金及各種鈷鹽等。其中&#xff0c;電池領域是…

【洛谷算法題】P5714-肥胖問題【入門2分支結構】

&#x1f468;?&#x1f4bb;博客主頁&#xff1a;花無缺 歡迎 點贊&#x1f44d; 收藏? 留言&#x1f4dd; 加關注?! 本文由 花無缺 原創 收錄于專欄 【洛谷算法題】 文章目錄 【洛谷算法題】P5714-肥胖問題【入門2分支結構】&#x1f30f;題目描述&#x1f30f;輸入格式&a…

給項目快速接入鏈路追蹤

為什么需要鏈路追蹤&#xff1f; 我們程序員在日常工作中&#xff0c;最常做事情之一就是修bug了。如果程序只是運行在單機上&#xff0c;我們最常用的方式就是在程序上打日志&#xff0c;然后程序運行的過程中將日志輸出到文件上&#xff0c;然后我們根據日志去推斷程序是哪一…

py 打包的6種方式

Python打包有幾種方式取決于你的需求&#xff0c;以下是常見的幾種方式&#xff1a; 使用PyInstaller打包&#xff1a;PyInstaller是一個非常流行的Python打包工具&#xff0c;可以將Python程序打包成獨立的可執行文件。它支持Windows、Linux和macOS等操作系統&#xff0c;并且…

redis-cluster集群

1.redis-cluster集群 redis3.0引入的分布式存儲方案 集群由多個node節點組成&#xff0c;redis數據分布在這些節點之中。 在集群之中分為主節點和從節點 集群模式當中&#xff0c;主從一一對應&#xff0c;數據寫入和讀取與主從模式一樣&#xff0c;主負責寫&#xff0c;從…