Java中使用DOM4J生成xml文件并解析xml文件的操作
一、前言
現(xiàn)在有不少需求,是需要我們解析xml文件中的數(shù)據(jù),然后導(dǎo)入到數(shù)據(jù)庫中,當(dāng)然解析xml文件也有好多種方法,小編覺得還是DOM4J用的最多最廣泛也最好理解的吧.小編也是最近需求里遇到了,就來整理一下自己的理解,只適合剛剛學(xué)習(xí)的,一起理解!今天我們把解析xml文件和生成xml文件在一起來展示.
二、準(zhǔn)備依賴
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
三、生成xml文件生成標(biāo)準(zhǔn)展示
生成xml代碼
/** * 使用DOM4J生成xml方法 */ public static void createXml(){ try { // 創(chuàng)建document對(duì)象 Document document = DocumentHelper.createDocument(); // 創(chuàng)建根節(jié)點(diǎn)bookRoot Element StudentRoot = document.addElement("StudentRoot"); // 向根節(jié)點(diǎn)中添加第一個(gè)節(jié)點(diǎn) Element book1 = StudentRoot.addElement("student"); // 向子節(jié)點(diǎn)中添加屬性 book1.addAttribute("id","1"); // 向節(jié)點(diǎn)中添加子節(jié)點(diǎn) Element name = book1.addElement("name"); // 向子節(jié)點(diǎn)賦值 name.setText("小喬"); Element price = book1.addElement("age"); price.setText("18"); // 向根節(jié)點(diǎn)中添加第二個(gè)節(jié)點(diǎn) Element book2 = StudentRoot.addElement("student"); book2.addAttribute("id","2").addElement("name").setText("大橋"); book2.addElement("age").setText("20"); // 向根節(jié)點(diǎn)中添加第三個(gè)節(jié)點(diǎn) Element book3 = StudentRoot.addElement("student"); book3.addAttribute("id","3").addElement("name").setText("孫策"); book3.addElement("age").setText("21"); // 設(shè)置生成xml的格式 OutputFormat of = OutputFormat.createPrettyPrint(); // 設(shè)置編碼格式 of.setEncoding("UTF-8"); // 生成xml文件 File file = new File("E:\\student.xml"); if (file.exists()){ file.delete(); } //創(chuàng)建一個(gè)xml文檔編輯器 XMLWriter writer = new XMLWriter(new FileOutputStream(file), of); //把剛剛創(chuàng)建的document放到文檔編輯器中 writer.write(document); writer.close(); } catch (Exception e) { e.printStackTrace(); } }
四、解析xml文件
解析xml的文件就是剛剛導(dǎo)出的那個(gè)樣子,我們展示兩種情況,一個(gè)是知道屬性名字和子元素名字的我們把解析的xml文件數(shù)據(jù)放到實(shí)體類中.不知道的就直接打印到控制臺(tái).
實(shí)體類展示
import lombok.Data; @Data public class Student { private int id; private String name; private int age; }
解析xml文件方法
public static void analysis(){ // 把要解析的xml變成file文件 File file = new File("E:\\student.xml"); // 獲取解析器對(duì)象 SAXReader reader = new SAXReader(); // 把文件解析成document樹 Document document = null; try { document = reader.read(file); } catch (DocumentException e) { e.printStackTrace(); } // 獲取根節(jié)點(diǎn) Element studentRoot = document.getRootElement(); // 獲取根節(jié)點(diǎn)中所有節(jié)點(diǎn) List<Element> elements = studentRoot.elements(); // 存放xml中節(jié)點(diǎn)的數(shù)據(jù)集合 List<Student> list = new ArrayList<>(); // 便利所有節(jié)點(diǎn) for (Element child : elements) { Student student = new Student(); //已知屬性名情況下 student.setId(Integer.parseInt(child.attributeValue("id")));//獲取屬性的數(shù)據(jù) //已知子元素名的情況下 student.setName(child.elementText("name"));//獲取元素中值 student.setAge(Integer.parseInt(child.elementText("age")));//獲取元素中值 list.add(student); //未知屬性名情況下 List<Attribute> attributes = child.attributes(); for (Attribute attribute : attributes) { System.out.println(attribute.getName() + "---> " + attribute.getValue()); } //未知子元素名情況下 List<Element> elementList = child.elements(); for (Element ele : elementList) { System.out.println(ele.getName() + "--->" + ele.getText()); } } //把解析xml出來的數(shù)據(jù)集合打印 list.forEach(x-> System.out.println(x)); }
解析結(jié)果展示
五、總結(jié)
這樣我們就把DOM4J來生成xml文件和解析xml文件就都操作完成了,有什么問題留言哦!!謝謝大家
到此這篇關(guān)于Java中使用DOM4J生成xml文件并解析xml文件的的文章就介紹到這了,更多相關(guān)java dom4j 解析xml文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java中實(shí)現(xiàn)OCR識(shí)別讀取圖片中的文字
圖片內(nèi)容一般無法編輯,如果想要讀取圖片中的文本,我們需要用到OCR工具,本文將介紹如何在Java中實(shí)現(xiàn)OCR識(shí)別讀取圖片中的文字,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2024-04-04基于jmeter實(shí)現(xiàn)跨線程組傳遞token過程圖解
這篇文章主要介紹了基于jmeter實(shí)現(xiàn)跨線程組傳遞token,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04JAVA求兩直線交點(diǎn)和三角形內(nèi)外心的方法
本文提供了JAVA求兩直線交點(diǎn)、三角形外心、三角形內(nèi)心的代碼和算法講解,大家可以參考使用2013-11-11jvm細(xì)節(jié)探索之synchronized及實(shí)現(xiàn)問題分析
這篇文章主要介紹了jvm細(xì)節(jié)探索之synchronized及實(shí)現(xiàn)問題分析,涉及synchronized的字節(jié)碼表示,JVM中鎖的優(yōu)化,對(duì)象頭的介紹等相關(guān)內(nèi)容,具有一定借鑒價(jià)值,需要的朋友可以參考下。2017-11-11Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法示例
這篇文章主要介紹了Java實(shí)現(xiàn)雙鏈表互相交換任意兩個(gè)節(jié)點(diǎn)的方法,簡單講述了雙鏈表的概念,并結(jié)合實(shí)例形式給出了java雙鏈表實(shí)現(xiàn)任意兩個(gè)節(jié)點(diǎn)交換的操作技巧,需要的朋友可以參考下2017-11-11Spring實(shí)戰(zhàn)之Bean銷毀之前的行為操作示例
這篇文章主要介紹了Spring實(shí)戰(zhàn)之Bean銷毀之前的行為操作,結(jié)合實(shí)例形式分析了spring在bean銷毀之前的行為相關(guān)設(shè)置與使用技巧,需要的朋友可以參考下2019-11-11