使用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"); //獲取根標簽 Element rootElement = read.getRootElement(); //根據(jù)根標簽獲取”student“標簽列表 List<Element> students = rootElement.elements("student"); //遍歷 for (Element student : students){ //獲取標簽的文本 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文檔,輸出所有學員信息和添加學生信息
使用DOM4J要導包
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>
學生對象
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集合保存學生對象 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)建學生對象 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é)點的文本類容給學生對象 student.setName(nameElement.getText()); student.setAge(Integer.parseInt(ageElement.getText())); student.setSchool(schoolElement.getText()); //將學生對象添加到list集合中 list.add(student); } } catch (DocumentException e) { e.printStackTrace(); } //遍歷集合 for (Student s : list) { System.out.println(s); } } }
運行圖片
添加學員信息
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)建集合存儲學生對象 List<Student> list=new ArrayList<>(); //要添加的學生信息 list.add(new Student("趙六",20,"安徽大學")); list.add(new Student("劉啟",21,"安徽大學江淮學員")); 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。并通過學生對象賦值 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(); } } }
運行后圖片
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
springboot接口參數(shù)校驗JSR303的實現(xiàn)
本文主要介紹了springboot接口參數(shù)校驗JSR303的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08idea ssm項目java程序使用十六進制rxtx包向串口發(fā)送指令的方法
這篇文章主要介紹了idea ssm項目java程序向串口發(fā)送指令并且使用十六進制 rxtx包,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-08-08IDEA2023隱藏.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