javaXML文件解析之DOM4J实操
既然前面说了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实操的更多相关文章
- Java---XML的解析(2)-DOM4J解析/Xpath
Dom4j: Dom SUN dom在加载时,将所有元素全部加载内存 DOM4j - 第三方. Dom4j是一个开源.灵活的XML API. 目前很多开源框架如struts,hibernate都使用d ...
- java--xml文件读取(JDOM&DOM4J)
1.JDOM解析 首先导入额外的jar包: Build Path:jdom-2.0.6.jar 准备工做获取到子节点的集合: package com.imooc_xml.jdom.text; impo ...
- XML文件解析之DOM4J解析
1.DOM4J介绍 dom4j的官网是http://www.dom4j.org/dom4j-1.6.1/,最新的版本是1.6.1,根据官网介绍可知.dom4j是一个易用的.开源的库,应用于Java平台 ...
- fso文件夹操作用法实操
Sub 订单转换()Application.ScreenUpdating = FalseOn Error Resume Next Dim fso, fl, m%, n%, p%, q& Dim ...
- [Django框架 - 静态文件配置、request对象方法初识、 pycharm链接数据库、ORM实操增删改查、django请求生命周期]
[Django框架 - 静态文件配置.request对象方法初识. pycharm链接数据库.ORM实操增删改查.django请求生命周期] 我们将html文件默认都放在templates文件夹下 将 ...
- XML文件解析-DOM4J方式和SAX方式
最近遇到的工作内容都是和xml内容解析相关的. 1图片数据以base64编码的方式保存在xml的一个标签中,xml文件通过接口的方式发送给我,然后我去解析出图片数据,对图片进行进一步处理. 2.xml ...
- 【实操日记】使用 PyQt5 设计下载远程服务器日志文件程序
最近通过 PyQt5 设计了一个下载服务器指定日期日志文件的程序,里面有些有意思的技术点,现在做一些分享. PyQt5 是一套 Python 绑定 Digia Qt5 应用的框架,是最强大的 GUI ...
- mPaaS 小程序架构解析 | 实操演示小程序如何实现多端开发
对于 mPaaS 小程序开发框架,想必读者们并不陌生.它源自于支付宝小程序框架,继承了易开发性.跨平台性及 Native 性能,不仅帮助开发者实现面向自有 App 投放小程序,还可快速构建打包,覆盖支 ...
- Linux基础实操六
实操一: 临时配置网络(ip,网关,dns)+永久配置 #ifconfig ens33 192.168.145.134/24 #vim /etc/resolv.conf #route add defa ...
随机推荐
- Android进阶(十)Android 发邮件
最近在做的APP涉及到发邮件,总结如下: 在android里进行邮件客户端开发可以有两种方式: 在邮件客户端的设计中,可以采用两种方法. 一种是调用android系统自带的邮件服务 优点:这种方法比较 ...
- How to create DB2 user function easily by DB Query Analyzer 6.03
How to create DB2user function easily by DB Query Analyzer 6.03 Ma Genfeng (Guangdong Unitoll Servic ...
- Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高!
Android拼图游戏的设计逻辑,从切图到交互动画,从关卡到倒计时,实例提高! 群英传的最后一章,我大致的看了一下这个例子,发现鸿洋大神也做过,就参考两个人的设计逻辑,感觉都差不多,就这样实现起来了 ...
- 实用Android 屏幕适配方案分享
转载地址:http://blog.csdn.net/gao_chun/article/details/45645051 真正可用,并且简单易行,可以在多个屏幕大小和屏幕密度上有良好表现的Android ...
- 不要使用jQuery触发原生事件
原文链接: DO NOT TRIGGER REAL EVENT NAMES WITH JQUERY! 原文日期: 2014年02月26日 翻译日期: 2014年03月2日 翻译人员: 铁锚 JavaS ...
- 集团公司(嵌入ETL工具)财务报表系统解决方案
集团公司(嵌入ETL工具)财务报表系统解决方案 一.项目背景: 某集团公司是一家拥有100多家子公司的大型集团公司,旗下子公司涉及各行各业,包括:金矿.铜矿.房产.化纤等.由于子公司在业务上的差异,子 ...
- 《UNIX网络编程 卷1》之"学习环境搭建"(CentOS 7)
<UNIX网络编程 卷1>的源码可以从www.unpbook.com下载得到.解压之后的目录为unpv13e. 详细步骤 编译 进入unpv13e目录,按如下步骤编译: ./configu ...
- 制药企业BI系统方案整体设计分享
制药企业全面预算系统蓝图 全面掌控企业的各种业务活动,及时准确的展现它们的状况与趋势,评估其达成的效果.存在的问题与风险.支持数据的导入,多级上报等多种特色功能,同时通过统一的报表平台实现精细话的权限 ...
- linux命令大全(自己慢慢看)
http://blog.zol.com.cn/874/article_873769.html rm -rf mydir /* 删除mydir目录 */ cd mydir /* 进入mydir目录 */ ...
- centOS 安装(光安装 和 u盘安装)
光盘安装用这个: http://www.williamlong.info/archives/1912.html 是否保留win7,要作好相关配置.有些插件可以不装. 网络设置:不好弄 如果用u盘安装, ...