java 读取xml dom4j_java 使用DOM4J解析XML文件

XML解析的四种方法:

1. DOM:形成树结构,有助于更好的理解、掌握,且代码容易编写。

解析过程中,树结构保存在内存中,方便修改。

2. SAX解析:采用事件驱动模式,对内存耗费比较小。

适用于只处理XML文件的数据时

3. JDOM :仅使用具体类,而不使用接口。

API大量使用了Collections

4. DOM4J解析:JDOM的一种智能分支,它合并了许多超出基本XML文档表示的功能。

它使用接口和抽象基本类方法

具有性能优异,灵活性好,功能强大和极端易用的特点。

是一个开放源码的文件。

以下是Dom4j解析xml文件并转型成为OBject对象放入LIST的演示:

/**

*

*/

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 TestDOMJ {

public static void main(String[] args) throws DocumentException {

//创建SAXReader对象

SAXReader reader = new SAXReader();

//调用read方法

Document doc = reader.read(new File("Person.xml"));

//获取根元素

Element root = doc.getRootElement();

//通过迭代器遍历直接节点

for (Iterator itebook=root.elementIterator();itebook.hasNext();) {

Element bookEl =itebook.next();

//获得book属性

for (Iterator itrAtt=bookEl.attributeIterator(); itrAtt.hasNext();) {

Attribute att = itrAtt.next();

System.out.println(att.getName()+"\t"+att.getValue());

}

}

List plist= new ArrayList();

System.out.println("/");

for (Iterator itebook=root.elementIterator();itebook.hasNext();) {

Person per = new Person();

Element bookEl =itebook.next();

for (Iterator ite = bookEl.elementIterator(); ite.hasNext();) {

Element type = ite.next();

System.out.println(type.getName()+"\t"+type.getText());

String nName = type.getName();

switch (nName) {

case "name":

per.setName(type.getText());

break;

case "age":

per.setAge(type.getText());

break;

case "station":

per.setStation(type.getText());

break;

case "salary":

per.setSalary(type.getText());

break;

case "subsidy":

per.setSubsidy(type.getText());

break;

}

}

//放入集合之中

plist.add(per);

System.out.println("---------------------------");

}

//遍历

for (Person p : plist) {

System.out.println(p.getName()+"\t"+p.getAge()+"\t"+p.getStation()+"\t"+p.getSalary()+"\t"+p.getSubsidy());

}

}

}

用于存储xml信息的类:

public class Person {

private String name;

private String age;

private String station;

private String salary;

private String subsidy;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

public String getStation() {

return station;

}

public void setStation(String station) {

this.station = station;

}

public String getSalary() {

return salary;

}

public void setSalary(String salary) {

this.salary = salary;

}

public String getSubsidy() {

return subsidy;

}

public void setSubsidy(String subsidy) {

this.subsidy = subsidy;

}

public Person(String name, String age, String station, String salary, String subsidy) {

super();

this.name = name;

this.age = age;

this.station = station;

this.salary = salary;

this.subsidy = subsidy;

}

public Person() {

super();

}

}

xml源文件

高老三

18

程序员

30000

5000

高小二

19

讲师

35000

2000

高小四

20

教授

20000

3000

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值