基于JDOM生成解析XML過(guò)程解析
JDOM是一個(gè)開(kāi)源項(xiàng)目,它基于樹(shù)型結(jié)構(gòu),利用純JAVA的技術(shù)對(duì)XML文檔實(shí)現(xiàn)解析、生成、序列化以及多種操作。
JDOM 直接為JAVA編程服務(wù)。它利用更為強(qiáng)有力的JAVA語(yǔ)言的諸多特性(方法重載、集合概念以及映射),把SAX和DOM的功能有效地結(jié)合起來(lái)。
Jdom是用Java語(yǔ)言讀、寫(xiě)、操作XML的新API函數(shù)。Jason Hunter 和 Brett McLaughlin公開(kāi)發(fā)布了它的1.0版本。在直覺(jué)、簡(jiǎn)單和高效的前提下,這些API函數(shù)被最大限度的優(yōu)化。在接下來(lái)的篇幅里將介紹怎么用Jdom去讀寫(xiě)一個(gè)已經(jīng)存在的XML文檔。
到官方網(wǎng)站下載JDOM包http://www.jdom.org/
注意的是,版本1和版本2的類(lèi)路徑已經(jīng)變更,如果你是更新使用版本2,則需要重新編譯你的代碼
package com.test; import java.io.FileOutputStream; import java.util.List; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; /** * @說(shuō)明 JDom生成解析XML * @author cuisuqiang * @version 1.0 * @since */ @SuppressWarnings("unchecked") public class JDomDemo { public static void main(String[] args) { String file = "C:\\p.xml"; // 文件存放位置 JDomDemo dj = new JDomDemo(); dj.createXml(file); dj.parserXml(file); } /** * 生成XML * @param filePath 文件路徑 */ public void createXml(String fileName) { Element root = new Element("persons"); Document document = new Document(root); Element person = new Element("person"); root.addContent(person); Element name = new Element("name"); name.setText("java小強(qiáng)"); person.addContent(name); Element sex = new Element("sex"); sex.setText("man"); person.addContent(sex); Element age = new Element("age"); age.setText("23"); person.addContent(age); XMLOutputter XMLOut = new XMLOutputter(); try { Format f = Format.getPrettyFormat(); f.setEncoding("UTF-8");//default=UTF-8 XMLOut.setFormat(f); XMLOut.output(document, new FileOutputStream(fileName)); } catch (Exception e) { e.printStackTrace(); } } /** * 解析XML * @param filePath 文件路徑 */ public void parserXml(String fileName) { try { SAXBuilder builder = new SAXBuilder(); Document document = builder.build(fileName); Element root = document.getRootElement(); List persons = root.getChildren("person"); for (int i = 0; i < persons.size(); i++) { Element person = (Element) persons.get(i); List pros = person.getChildren(); for (int j = 0; j < pros.size(); j++) { Element element = (Element) pros.get(j); System.out.println(element.getName() + ":" + element.getValue()); } } } catch (Exception e) { e.printStackTrace(); } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
教你Java中的Lock鎖底層AQS到底是如何實(shí)現(xiàn)的
本文是基于ReentrantLock來(lái)講解,ReentrantLock加鎖只是對(duì)AQS的api的調(diào)用,底層的鎖的狀態(tài)(state)和其他線(xiàn)程等待(Node雙向鏈表)的過(guò)程其實(shí)是由AQS來(lái)維護(hù)的,對(duì)Java?Lock鎖AQS實(shí)現(xiàn)過(guò)程感興趣的朋友一起看看吧2022-05-05Intellij IDEA基于Springboot的遠(yuǎn)程調(diào)試(圖文)
這篇文章主要介紹了Intellij IDEA基于Springboot的遠(yuǎn)程調(diào)試(圖文),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Spring?Boot?集成Redisson實(shí)現(xiàn)分布式鎖詳細(xì)案例
這篇文章主要介紹了Spring?Boot?集成Redisson實(shí)現(xiàn)分布式鎖詳細(xì)案例,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下2022-08-08java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出
這篇文章主要介紹了java導(dǎo)出excel 瀏覽器直接下載或者或以文件形式導(dǎo)出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06關(guān)于java命令的本質(zhì)邏輯揭秘過(guò)程
Java是通過(guò)java虛擬機(jī)來(lái)裝載和執(zhí)行編譯文件(class文件)的,java虛擬機(jī)通過(guò)命令java option 來(lái)啟動(dòng),這篇文章主要給大家介紹了關(guān)于java命令的本質(zhì)邏輯揭秘的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-05-05Java動(dòng)態(tài)替換properties文件中鍵值方式
這篇文章主要介紹了Java動(dòng)態(tài)替換properties文件中鍵值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08SpringBoot超詳細(xì)講解Thymeleaf模板引擎
這篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,類(lèi)似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-07-07