建立Employee类,属性包含上面表格的列。 并将上题中的表格对应的XML数据进行解析,通过反射机制在程序中创建代表3行数据的3个Employee对象。
xmL文件:
<?xml version="1.0" encoding="UTF-8"?>
<employees>
<employee id="1001">
<name>小邪</name>
<age>25</age>
<salary>20000</salary>
<job>Java高级工程师</job>
</employee>
<employee id="1002">
<name>小小杰</name>
<age>18</age>
<salary>10000</salary>
<job>Java中级工程师</job>
</employee>
<employee id="1003">
<name>小杰</name>
<age>15</age>
<salary>8000</salary>
<job>Java初级工程师</job>
</employee>
</employees>
employee类:
package cn.sxt.work10;
public class Employee {
private String name;
private int age;
private long salary;
private String job;
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 long getSalary() {
return salary;
}
public void setSalary(long salary) {
this.salary = salary;
}
public String getJob() {
return job;
}
public void setJob(String job) {
this.job = job;
}
public Employee(String name, int age, long salary, String job) {
super();
this.name = name;
this.age = age;
this.salary = salary;
this.job = job;
}
public Employee() {
super();
}
@Override
public String toString() {
return "Employee [name=" + name + ", age=" + age + ", salary=" + salary + ", job=" + job + "]";
}
}
实现类:
package cn.sxt.work10;
import java.io.File;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Test {
/**
* 解析xml文件,利用dom4j
* @param args
* @throws DocumentException
*/
public static void main(String[] args) throws DocumentException {
//创建Saxreader对象
SAXReader reader=new SAXReader();
//调用reader的对象中的方法read。
Document doc = reader.read(new File("employee.xml"));
//创建集合存放employee对象
List<Employee> list=new ArrayList<>();
//获取根节点
Element root = doc.getRootElement();
for(Iterator<Element> subroot=root.elementIterator();subroot.hasNext();) {
Element sub = subroot.next();//sub为根节点的子节点。
for(Iterator<Attribute> atr=sub.attributeIterator();atr.hasNext();) {
Attribute next = atr.next();
System.out.println("属性的名称:"+next.getName()+"\t"+next.getValue());
}
//System.out.println("\n========================");
}
//获取子节点的值
for(Iterator<Element> sub=root.elementIterator();sub.hasNext();) {
Element child = sub.next();
//创建对象
Employee e=new Employee();
//获取子节点
for(Iterator<Element> subchild=child.elementIterator();subchild.hasNext();) {
Element next = subchild.next();
String str = next.getName();
//System.out.println(str);
switch (str) {
case "name":
e.setName(next.getText());
break;
case "age":
e.setAge(Integer.parseInt(next.getText()));
break;
case "salary":
e.setSalary(Long.parseLong(next.getText()));
break;
case "job":
e.setJob(next.getText());
break;
}
//list.add(e);
System.out.println(next.getName()+"\t"+next.getText());
}
list.add(e);
System.out.println("=================");
}
//System.out.println(list);
//遍历集合
for (Employee employee : list) {
System.out.println("员工的信息为:"+employee.toString());
}
}
}
效果截图:
需要dom4j的jar包的私聊告诉我。