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

XML文件:

 <?xml version="1.0" encoding="UTF-8" ?>
<person>
<from where="Others">
<name>Jack</name>
<age>25</age>
<sex>boy</sex>
<hobby>sing songs</hobby>
</from>
<from where="China">
<name>桔子桑</name>
<age>26</age>
<sex>男</sex>
<hobby>看书、画画</hobby>
</from>
</person>

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

 package com.dom.node;

 public class Person {
String where;
String name;
String age;
String sex;
String hobby;
public void setWhere(String where) {
this.where = where;
}
public void setName(String name) {
this.name = name;
}
public void setAge(String age) {
this.age = age;
}
public void setSex(String sex) {
this.sex = sex;
}
public void setHobby(String hobby) {
this.hobby = hobby;
}
@Override
public String toString() {
return "Person [where=" + where + ", name=" + name + ", age=" + age + ", sex=" + sex + ", hobby=" + hobby + "]";
}
}

DOM4J解析方法类:

 package com.dom.node;

 import java.util.*;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class Dom4jxml {
public static void main(String[] args) {
try {
SAXReader reader = new SAXReader();
Document document = reader.read("file/clear.xml");
Element rootElement = document.getRootElement();
Iterator<Element> it =rootElement.elementIterator();
List<Person> personlist = new ArrayList<Person>();
while(it.hasNext()) {
Person person = new Person();
Element son1=(Element)it.next();
List<Attribute> attrlist1 =son1.attributes();
for (Attribute attr : attrlist1) {
if(attr.getName().equals("where")) {
person.setWhere(attr.getValue());
}
}
Iterator itt = son1.elementIterator();
while(itt.hasNext()) {
Element son2 =(Element)itt.next();
if(son2.getName().equals("name")) {
person.setName(son2.getStringValue());
}else if(son2.getName().equals("age")) {
person.setAge(son2.getStringValue());
}else if(son2.getName().equals("sex")) {
person.setSex(son2.getStringValue());
}else if(son2.getName().equals("hobby")) {
person.setHobby(son2.getStringValue());
}
}
personlist.add(person);
person=null;
}
System.out.println("总人数:"+personlist.size()+"人");
for (Person person : personlist) {
System.out.println(person.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

控制台打印输出:

总人数: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<Element> it =rootElement.elementIterator();                   //elementIterator()返回一个迭代器

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

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

getValue();                                                                                     //得到属性值

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

javaXML文件解析之DOM4J实操的更多相关文章

  1. Java---XML的解析(2)-DOM4J解析/Xpath

    Dom4j: Dom SUN dom在加载时,将所有元素全部加载内存 DOM4j - 第三方. Dom4j是一个开源.灵活的XML API. 目前很多开源框架如struts,hibernate都使用d ...

  2. java--xml文件读取(JDOM&DOM4J)

    1.JDOM解析 首先导入额外的jar包: Build Path:jdom-2.0.6.jar 准备工做获取到子节点的集合: package com.imooc_xml.jdom.text; impo ...

  3. XML文件解析之DOM4J解析

    1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...

  4. fso文件夹操作用法实操

    Sub 订单转换()Application.ScreenUpdating = FalseOn Error Resume Next Dim fso, fl, m%, n%, p%, q& Dim ...

  5. [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]

    [Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...

  6. XML文件解析-DOM4J方式和SAX方式

    最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...

  7. 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序

    最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...

  8. mPaaS 小程序架构解析 | 实操演示小程序如何实现多端开发

    对于 mPaaS 小程序开发框架,想必读者们并不陌生.它源自于支付宝小程序框架,继承了易开发性.跨平台性及 Native 性能,不仅帮助开发者实现面向自有 App 投放小程序,还可快速构建打包,覆盖支 ...

  9. Linux基础实操六

    实操一: 临时配置网络(ip,网关,dns)+永久配置 #ifconfig ens33 192.168.145.134/24 #vim /etc/resolv.conf #route add defa ...

随机推荐

  1. Cracking the Coding Interview:: 寻找有环链表的环路起始节点

    给定一个有环链表,实现一个算法返回环路的开头节点. 这个问题是由经典面试题-检测链表是否存在环路演变而来.这个问题也是编程之美的判断两个链表是否相交的扩展问题. 首先回顾一下编程之美的问题. 由于如果 ...

  2. C语言assert的用法

    assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include <assert.h>void assert( int ...

  3. [RDLC]一步一步教你使用RDLC(一)

    一:加数据集,并且命名为Quotation,如下图所示: 二: 添加一张报表,命名为Quotation,如下图所示: 向报表中添加"表"这一项,如下图所示: 这时就弹出一个选择数据 ...

  4. ibatis 数据库时间 插入数据

    <insert id="insert" parameterClass="ToDoBar" >     <selectKey resultCla ...

  5. Dynamics CRM Odata QueryUrl中的SetName问题

    用javasrcipt通过odata方式访问组织服务进行CRUD操作时,queryurl的正确拼接很关键. 以下面的url为例:"XX/XRMServices/2011/Organizati ...

  6. 《java入门第一季》之面向对象面试题(fianl关键字)

    /* 面试题:final修饰局部变量的问题 基本类型:基本类型的值不能发生改变. 引用类型:引用类型的(地址值)(不能发生改变),但是,该对象的堆内存的值是可以改变的. */ class Studen ...

  7. 使用Multiplayer Networking做一个简单的多人游戏例子-2/3(Unity3D开发之二十六)

    猴子原创,欢迎转载.转载请注明: 转载自Cocos2Der-CSDN,谢谢! 原文地址: http://blog.csdn.net/cocos2der/article/details/51007512 ...

  8. java数据类型易错点简单总结,欢迎大神前辈补充!谢谢

    数据类型那这边看似简单,花了我很长时间也就是才练到几成"功力"吧.还希望路过的大神在下面补充,菜鸟的我深受感谢! 首先看两个思考题 思考题1:请问下面这个有没有问题 double ...

  9. iOS开发讲解SDWebImage,你真的会用吗?

    SDWebImage作为目前最受欢迎的图片下载第三方框架,使用率很高.但是你真的会用吗?本文接下来将通过例子分析如何合理使用SDWebImage. 使用场景:自定义的UITableViewCell上有 ...

  10. linux服务搭建----ssh服务开启

    //ssh  服务     ssh 192.168.88.254         如何开启   service sshd restart     关掉该服务 servicesshd stop     ...