Java中使用DOM4J生成xml文件并解析xml文件的操作
一、前言
現(xiàn)在有不少需求,是需要我們解析xml文件中的數(shù)據(jù),然后導入到數(shù)據(jù)庫中,當然解析xml文件也有好多種方法,小編覺得還是DOM4J用的最多最廣泛也最好理解的吧.小編也是最近需求里遇到了,就來整理一下自己的理解,只適合剛剛學習的,一起理解!今天我們把解析xml文件和生成xml文件在一起來展示.
二、準備依賴
<dependency>
<groupId>dom4j</groupId>
<artifactId>dom4j</artifactId>
<version>1.6.1</version>
</dependency>
三、生成xml文件生成標準展示

生成xml代碼
/**
* 使用DOM4J生成xml方法
*/
public static void createXml(){
try {
// 創(chuàng)建document對象
Document document = DocumentHelper.createDocument();
// 創(chuàng)建根節(jié)點bookRoot
Element StudentRoot = document.addElement("StudentRoot");
// 向根節(jié)點中添加第一個節(jié)點
Element book1 = StudentRoot.addElement("student");
// 向子節(jié)點中添加屬性
book1.addAttribute("id","1");
// 向節(jié)點中添加子節(jié)點
Element name = book1.addElement("name");
// 向子節(jié)點賦值
name.setText("小喬");
Element price = book1.addElement("age");
price.setText("18");
// 向根節(jié)點中添加第二個節(jié)點
Element book2 = StudentRoot.addElement("student");
book2.addAttribute("id","2").addElement("name").setText("大橋");
book2.addElement("age").setText("20");
// 向根節(jié)點中添加第三個節(jié)點
Element book3 = StudentRoot.addElement("student");
book3.addAttribute("id","3").addElement("name").setText("孫策");
book3.addElement("age").setText("21");
// 設置生成xml的格式
OutputFormat of = OutputFormat.createPrettyPrint();
// 設置編碼格式
of.setEncoding("UTF-8");
// 生成xml文件
File file = new File("E:\\student.xml");
if (file.exists()){
file.delete();
}
//創(chuàng)建一個xml文檔編輯器
XMLWriter writer = new XMLWriter(new FileOutputStream(file), of);
//把剛剛創(chuàng)建的document放到文檔編輯器中
writer.write(document);
writer.close();
} catch (Exception e) {
e.printStackTrace();
}
}
四、解析xml文件
解析xml的文件就是剛剛導出的那個樣子,我們展示兩種情況,一個是知道屬性名字和子元素名字的我們把解析的xml文件數(shù)據(jù)放到實體類中.不知道的就直接打印到控制臺.
實體類展示
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");
// 獲取解析器對象
SAXReader reader = new SAXReader();
// 把文件解析成document樹
Document document = null;
try {
document = reader.read(file);
} catch (DocumentException e) {
e.printStackTrace();
}
// 獲取根節(jié)點
Element studentRoot = document.getRootElement();
// 獲取根節(jié)點中所有節(jié)點
List<Element> elements = studentRoot.elements();
// 存放xml中節(jié)點的數(shù)據(jù)集合
List<Student> list = new ArrayList<>();
// 便利所有節(jié)點
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));
}
解析結果展示

五、總結
這樣我們就把DOM4J來生成xml文件和解析xml文件就都操作完成了,有什么問題留言哦!!謝謝大家
到此這篇關于Java中使用DOM4J生成xml文件并解析xml文件的的文章就介紹到這了,更多相關java dom4j 解析xml文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
在非spring環(huán)境中調用service中的方法
非Spring環(huán)境指的是不使用Spring框架來管理和配置應用程序的運行時環(huán)境,本文將給大家介紹如何在非spring環(huán)境中調用service中的方法,文中有詳細實現(xiàn)步驟,需要的朋友可以參考下2024-03-03
自定義JmsListenerContainerFactory時,containerFactory字段解讀
這篇文章主要介紹了自定義JmsListenerContainerFactory時,containerFactory字段解讀,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07
SpringBoot+MyBatis-Plus實現(xiàn)數(shù)據(jù)庫讀寫分離的代碼示例
在當今互聯(lián)網(wǎng)應用中,數(shù)據(jù)庫讀寫分離是提高系統(tǒng)性能和穩(wěn)定性的重要手段之一,通過將讀操作和寫操作分別路由到不同的數(shù)據(jù)庫節(jié)點,可以有效減輕數(shù)據(jù)庫服務器的負擔,本文將介紹如何利用SpringBoot和MyBatis-Plus框架實現(xiàn)數(shù)據(jù)庫讀寫分離,需要的朋友可以參考下2023-11-11
java基于quasar實現(xiàn)協(xié)程池的方法示例
本文主要介紹了java基于quasar實現(xiàn)協(xié)程池的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧<BR>2022-06-06
SpringBoot在IDEA中實現(xiàn)熱部署的步驟
這篇文章主要介紹了SpringBoot在IDEA中實現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11

