java xml dom4j 解析_javaXML文件解析之DOM4J实操

既然前面说了DOM4J这里好那里好,大家都是在用这个,那咱就不得不写一个了。

XML文件:

1 <?xml version="1.0" encoding="UTF-8"?>

2

3

4 Jack

5 25

6 boy

7 sing songs

8

9

10 桔子桑

11 26

12 男

13 看书、画画

14

15

Person类,用于存储解析所得信息:

1 packagecom.dom.node;2

3 public classPerson {4 String where;5 String name;6 String age;7 String sex;8 String hobby;9 public voidsetWhere(String where) {10 this.where =where;11 }12 public voidsetName(String name) {13 this.name =name;14 }15 public voidsetAge(String age) {16 this.age =age;17 }18 public voidsetSex(String sex) {19 this.sex =sex;20 }21 public voidsetHobby(String hobby) {22 this.hobby =hobby;23 }24 @Override25 publicString toString() {26 return "Person [where=" + where + ", name=" + name + ", age=" + age + ", sex=" + sex + ", hobby=" + hobby + "]";27 }28 }

DOM4J解析方法类:

1 packagecom.dom.node;2

3 import java.util.*;4 importorg.dom4j.Attribute;5 importorg.dom4j.Document;6 importorg.dom4j.Element;7 importorg.dom4j.io.SAXReader;8

9 public classDom4jxml {10 public static voidmain(String[] args) {11 try{12 SAXReader reader = newSAXReader();13 Document document = reader.read("file/clear.xml");14 Element rootElement =document.getRootElement();15 Iterator it =rootElement.elementIterator();16 List personlist = new ArrayList();17 while(it.hasNext()) {18 Person person = newPerson();19 Element son1=(Element)it.next();20 List attrlist1 =son1.attributes();21 for(Attribute attr : attrlist1) {22 if(attr.getName().equals("where")) {23 person.setWhere(attr.getValue());24 }25 }26 Iterator itt =son1.elementIterator();27 while(itt.hasNext()) {28 Element son2 =(Element)itt.next();29 if(son2.getName().equals("name")) {30 person.setName(son2.getStringValue());31 }else if(son2.getName().equals("age")) {32 person.setAge(son2.getStringValue());33 }else if(son2.getName().equals("sex")) {34 person.setSex(son2.getStringValue());35 }else if(son2.getName().equals("hobby")) {36 person.setHobby(son2.getStringValue());37 }38 }39 personlist.add(person);40 person=null;41 }42 System.out.println("总人数:"+personlist.size()+"人");43 for(Person person : personlist) {44 System.out.println(person.toString());45 }46 } catch(Exception e) {47 e.printStackTrace();48 }49 }50 }

控制台打印输出:

总人数:2人

Person [where=Others, name=Jack, age=25, sex=boy, hobby=sing songs]

Person [where=China, name=桔子桑, age=26, sex=男, hobby=看书、画画]

总结一下其中获取节点相关数据的方法吧,以免混淆;

SAXReader reader = new SAXReader();                                     //新建SAXReader对象

Document document = reader.read("file/clear.xml");                    //read()方法将xml文件载入当前程序

Element rootElement = document.getRootElement();                  //getRootElement()方法获取文档的根节点

Iterator it =rootElement.elementIterator();                   //elementIterator()返回一个迭代器

attributes() ;                                                                                   //返回节点的属性(List集合)

getName();                                                                                    //得到属性名或者节点名

getValue();                                                                                     //得到属性值

getStringValue();                                                                            //得到节点内部的字符串

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值