使用dom4j解析xml文件問題
使用dom4j解析xml文件
Stu.java
private String name;
private int age;
private String sex;
public Stu(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
}
public Stu() {
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return "Stu{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
}
}student.xml
<?xml version="1.0" encoding="utf-8"?>
<students>
<student>
<name>張三</name>
<age>18</age>
<sex>男</sex>
</student>
<student>
<name>李四</name>
<age>19</age>
<sex>女</sex>
</student>
</students>getxml.java
import Bean.Stu;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.junit.Test;
import java.util.List;
public class getxml {
@Test
public void get() throws Exception {
//獲取SAXReader對象
SAXReader saxReader = new SAXReader();
//讀取配置文件
Document read = saxReader.read("./src/main/java/src/student.xml");
//獲取根標(biāo)簽
Element rootElement = read.getRootElement();
//根據(jù)根標(biāo)簽獲取”student“標(biāo)簽列表
List<Element> students = rootElement.elements("student");
//遍歷
for (Element student : students){
//獲取標(biāo)簽的文本
String name = student.elementText("name");
int age = Integer.parseInt(student.elementText("age"));
String sex = student.elementText("sex");
Stu stu = new Stu(name, age, sex);
System.out.println(stu);
}
}
}結(jié)果:

使用DOM4J解析XML文檔,輸出所有學(xué)員信息和添加學(xué)生信息
使用DOM4J要導(dǎo)包
xml信息
<?xml version="1.0" encoding="UTF-8"?>
<students>
<student>
<name>蘇鴻</name>
<age>20</age>
<school>北方交大</school>
</student>
<student>
<name>李明</name>
<age>21</age>
<school>北大</school>
</student>
</students>學(xué)生對象
package web9_29.lx.lx2;
public class Student {
private String name;
private int age;
private String school;
public Student() {
}
public Student(String name, int age, String school) {
this.name = name;
this.age = age;
this.school = school;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSchool() {
return school;
}
public void setSchool(String school) {
this.school = school;
}
public String toString() {
return "Student{name = " + name + ", age = " + age + ", school = " + school + "}";
}
}DOM4J解析XML
1.讀取XML文件,獲得document對象
SAXReader saxReader=new SAXReader();
Document doc=saxReader.read(new File("input.xml"));//input是你xml的文件位置2.//獲取文檔的根元素Element root=doc.getRootElement();
3.//獲取某接節(jié)點的單個子節(jié)點
Element? nameElement=root.element("name");//name是節(jié)點名4.//獲取節(jié)點的文本內(nèi)容
String text=nameElement.getText();
package web9_29.lx.lx2;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class DOM4JStu {
public static void main(String[] args) {
//創(chuàng)建list集合保存學(xué)生對象
List<Student> list=new ArrayList<>();
try {
//讀取XML文件,獲得document對象
SAXReader saxReader=new SAXReader();
Document doc=saxReader.read(new File("src\\web9_29\\lx\\lx2\\Student.xml"));
//獲取文檔的根元素
Element root=doc.getRootElement();
//遍歷根元素的節(jié)點元素
Iterator<?> it=root.elementIterator();
while (it.hasNext()){
//創(chuàng)建學(xué)生對象
Student student = new Student();
Element stuElement = (Element) it.next();
//獲取節(jié)點
Element nameElement=stuElement.element("name");
Element ageElement=stuElement.element("age");
Element schoolElement=stuElement.element("school");
//獲取節(jié)點的文本類容給學(xué)生對象
student.setName(nameElement.getText());
student.setAge(Integer.parseInt(ageElement.getText()));
student.setSchool(schoolElement.getText());
//將學(xué)生對象添加到list集合中
list.add(student);
}
} catch (DocumentException e) {
e.printStackTrace();
}
//遍歷集合
for (Student s : list) {
System.out.println(s);
}
}
}
運(yùn)行圖片

添加學(xué)員信息
package web9_29.lx.lx2;
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.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class DOM4JStuAdd {
public static void main(String[] args) {
//創(chuàng)建集合存儲學(xué)生對象
List<Student> list=new ArrayList<>();
//要添加的學(xué)生信息
list.add(new Student("趙六",20,"安徽大學(xué)"));
list.add(new Student("劉啟",21,"安徽大學(xué)江淮學(xué)員"));
try {
//讀取XML文件,獲得document對象
SAXReader saxReader = new SAXReader();
Document document=saxReader.read(new File("src\\web9_29\\lx\\lx2\\Student.xml"));
//獲取文檔的根元素
Element root=document.getRootElement();
for (Student s : list) {
//添加student節(jié)點
Element newStudentElement=root.addElement("student");
//在student節(jié)點下添加節(jié)點name,age,school。并通過學(xué)生對象賦值
Element nameElement=newStudentElement.addElement("name");
nameElement.setText(s.getName());
Element ageElement=newStudentElement.addElement("age");
ageElement.setText(String.valueOf(s.getAge()));
Element schoolElement=newStudentElement.addElement("school");
schoolElement.setText(s.getSchool());
}
OutputFormat of=OutputFormat.createPrettyPrint();
//指定編碼格式
of.setEncoding("UTF-8");
XMLWriter writer=new XMLWriter(new FileWriter("src\\web9_29\\lx\\lx2\\Student.xml"),of);
writer.write(document);
writer.close();
} catch (DocumentException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}運(yùn)行后圖片

總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot接口參數(shù)校驗JSR303的實現(xiàn)
本文主要介紹了springboot接口參數(shù)校驗JSR303的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
idea ssm項目java程序使用十六進(jìn)制rxtx包向串口發(fā)送指令的方法
這篇文章主要介紹了idea ssm項目java程序向串口發(fā)送指令并且使用十六進(jìn)制 rxtx包,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08
IDEA2023隱藏.idea和.iml文件的實現(xiàn)步驟
IDEA新建項目會自動生成一個.idea文件夾和.iml文件,本文主要介紹了IDEA2023隱藏.idea和.iml文件的實現(xiàn)步驟,具有一定的參考價值,感興趣的可以了解一下2023-09-09
關(guān)于BeanUtils.copyProperties(source, target)的使用
這篇文章主要介紹了關(guān)于BeanUtils.copyProperties(source, target)的使用說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-06-06
使用Spring Boot實現(xiàn)操作數(shù)據(jù)庫的接口的過程
本文給大家分享使用Spring Boot實現(xiàn)操作數(shù)據(jù)庫的接口的過程,包括springboot原理解析及實例代碼詳解,感興趣的朋友跟隨小編一起看看吧2021-07-07

