首先聲明,這個地方是利用dom4j進行解析和生成,需要用到dom4j的jar包,所以首先需要我們獲取jar包:
<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</version> </dependency>
生成xml文件代碼案列:
package day12; import java.io.FileOutputStream; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; /** * 寫出XML文檔 */ public class WriteXmlDemo { public static void main(String[] args) { List<Emp> empList = new ArrayList<Emp>(); empList.add(new Emp(1,"張三",22,"男",3000)); empList.add(new Emp(2,"李四",23,"女",4000)); empList.add(new Emp(3,"王五",24,"男",5000)); empList.add(new Emp(4,"趙六",25,"女",6000)); empList.add(new Emp(5,"錢七",26,"男",7000)); empList.add(new Emp(6,"傳奇",21,"男",8000)); /* * 寫出XML文檔的大致步驟 * 1.創建空白文檔對象Document * 2.向該文檔中添加根元素 * 3.按照規定的XML文檔結構從根元素開始,逐級添加子元素,已完成該結構 * 4.創建XMLWriter * 5.將Document對象寫出成XML文檔 * 6.將XMLWriter關閉 */ //1 Document doc = DocumentHelper.createDocument(); /* * 2.Element addElement(String name) * Document提供的該方法是用來向當前文檔中添加給定名字的根元素。並將其以一個Element * 實例返回以便於繼續對該根元素操作。 * 需要注意,該方法只能調用一次,因為一個文檔中只能有一個根元素。 */ Element root = doc.addElement("list"); //將所有員工信息以若干<emp>標簽形式添加到<list>中 for(Emp emp:empList){ /* * Element提供了向其中添加子標簽的方法: * Element addElement(String name) */ Element empEle = root.addElement("emp"); //添加<name>標簽 Element nameEle = empEle.addElement("name"); nameEle.addText(emp.getName()); //添加<age>標簽 Element ageEle = empEle.addElement("age"); ageEle.addText(String.valueOf(emp.getAge())); //添加<gender>標簽 Element genderEle = empEle.addElement("gender"); genderEle.addText(emp.getGender()); //添加<salary>標簽 Element salaryEle = empEle.addElement("salary"); salaryEle.addText(emp.getSalary()+""); empEle.addAttribute("id",emp.getId()+""); } try { FileOutputStream fos = new FileOutputStream("myemp.xml"); XMLWriter writer = new XMLWriter(fos,OutputFormat.createCompactFormat()); writer.write(doc); System.out.println("寫出完畢!"); writer.close(); } catch (Exception e) { e.printStackTrace(); } } }
解析xml文件代碼案列
package day12; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; /** * 使用DOM4J解析XML文檔 * @author tarena * */ public class ParseXMLDemo { public static void main(String[] args) { /* * 讀取emplist文件,將該xml文檔中的所有員工信息解析出來, * 並以若干Emp實例保存,然后將這些員工信息存入到一個List集合中。 */ /* * 使用DOM解析XML的四大致流程: * 1.創建SAXReader * 2.使用SAXReader讀取要解析的XML文檔,該步驟就是DOM耗時耗資源的地方, * 因為會將文檔所有內容解析完畢並存入到內存中。 * 讀取方法會返回一個Document對象,該對象就表示解析出來的該XML文檔內容 * 3.通過Document對象獲取根元素(根標簽)。 * 4.根據文檔的結構,從根元素開始逐級獲取子元素以達到遍歷XML文檔數據的目的。 */ try { //1 SAXReader reader = new SAXReader(); //2 Document doc = reader.read(new FileInputStream("emplist.xml")); /* *3.獲取根元素 *Element的每一個實例用於表示XML文檔中的一個元素(一對標簽) *它提供了很多用於操作當前標簽的方法,其中常用的用於獲取標簽信息的方法有: * * String getName() 獲取標簽名 * * Element elements(Sting name) 根據給定名字獲取當前標簽中的子標簽 * * List elements() * 獲取當前標簽中的所有子標簽,返回的集合中是若干Element實例,每個為一個子元素 * * List elements(String name) 獲取當前標簽中的所有同名名字元素 * * String getText() 獲取當前標簽中間的文本 * * Attribute attribute(String name) 獲取當前標簽中指定名字的屬性 * */ Element root = doc.getRootElement(); List<Emp> empList = new ArrayList<Emp>(); /* * 獲取<list>標簽中的所有<emp>標簽 */ List<Element> list = root.elements(); /* * 將每一個<emp>標簽中的內容取到,並以一個Emp實例保存,然后將該對象存入集合 */ for(Element empEle : list){ // System.out.println(empEle.getName()); //獲取name Element nameEle = empEle.element("name"); String name = nameEle.getText(); System.out.println(name); //獲取age int age = Integer.parseInt(empEle.elementText("age")); System.out.println(age); //獲取性別 String gender = empEle.elementText("gender"); System.out.println(gender); //獲取工資 int salary = Integer.parseInt(empEle.elementText("salary")); System.out.println(salary); //獲取ID int id = Integer.parseInt(empEle.attributeValue("id")); Emp emp = new Emp(id , name , age ,gender, salary); empList.add(emp); } System.out.println("解析完成!"); for(Emp e:empList){ System.out.println(e); } } catch (Exception e) { e.printStackTrace(); } } }
實體類
package day12; /** * 員工信息 */ public class Emp { private int id; private String name; private int age; private String gender; private int salary; public Emp(){ } public Emp(int id, String name, int age, String gender, int salary) { super(); this.id = id; this.name = name; this.age = age; this.gender = gender; this.salary = salary; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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 getGender() { return gender; } public void setGender(String gender) { this.gender = gender; } public int getSalary() { return salary; } public void setSalary(int salary) { this.salary = salary; } @Override public String toString() { return id + "," + name + "," + age + "," + "," + salary; } }
如果有幫助到大家,希望大家給個贊,謝謝!
