这是需要读取的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee>
<code>emp001</code>
<name>张三</name>
<age>12</age>
<sex>男</sex>
</employee>
<employee>
<code>emp002</code>
<name>李四</name>
<age>88</age>
<sex>男</sex>
</employee>
</employees>
这是一个工具类 用来得到类路径
package com.sczy.Tools;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;
//获取类路径
public class Tloos {
//获取当前文件袋额类路径
public static String getPaths(){
String path = Tloos.class.getClassLoader().getResource("").getPath().toString();
try {
path = URLDecoder.decode(path,"utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return path;
}
这是读取方法的主体类
package com.sczy.entity;
import com.sczy.Tools.Tloos;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class dom4jForEmployee {
public static List<Employee> getEmployee(String fileName){
List<Employee> empList = new ArrayList<Employee>();
String classPath = Tloos.getPaths();
File xmlFile = new File(classPath+"com/sczy/doc/"+fileName);//基于文件建立一个文件流
Reader read = null;
try {
read = new FileReader(xmlFile);
SAXReader saxread = new SAXReader();
Document doc = saxread.read(read);//获取文档流
Element ele = doc.getRootElement();//获取跟节点
List<Element> elelist = ele.elements("employee");//获取所有根节点下的所有一级子元素
for(Element e:elelist){
Employee emp = new Employee();
String code = e.element("code").getText();
emp.setEmpCode(code);
String name = e.element("name").getText();
emp.setName(name);
String ages = e.element("age").getText();
int age = Integer.parseInt(ages);
emp.setAge(age);
String sex = e.element("sex").getText();
emp.setSex(sex);
empList.add(emp);//将得到的对象放进数组
}
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
read.close();//关闭流
} catch (IOException e) {
e.printStackTrace();
}
}
return empList;
}
}
测试类
package com.sczy.test;
import com.sczy.entity.Employee;
import com.sczy.entity.dom4jForEmployee;
import java.util.ArrayList;
public class testDom4jForEmployee {
public static void main(String[] args) {
String fileName = "Employee.xml";
ArrayList<Employee> emp = (ArrayList<Employee>) dom4jForEmployee.getEmployee(fileName);
for(Employee e:emp){
System.out.println(e.getEmpCode()+" "+e.getName()+" "+e.getAge()+" "+e.getAge());
}
}
}