java dom4j解析xml实例(2)
java利用dom4j解析xml 需要的jar包:
dom4j官方网站在 http://www.dom4j.org/
下载dom4j-1.6.1.zip
解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要加入包jaxen-1.1-beta-7.jar(如果不导入这个架包程序可以执行出结果,但最后会报异常)
将相关jar包引入后,实际解析操作如下:
1.要解析的xml文件province.xml:
<china dn="day">
<city quName="黑龙江" pyName="heilongjiang" cityname="哈尔滨" state1="21" state2="7" stateDetailed="小到中雨转小雨" tem1="21" tem2="13" windState="东风4-5级转3-4级"/>
<city quName="吉林" pyName="jilin" cityname="长春" state1="8" state2="9" stateDetailed="中雨转大雨" tem1="19" tem2="14" windState="东南风3-4级"/>
<city quName="辽宁" pyName="liaoning" cityname="沈阳" state1="8" state2="9" stateDetailed="中雨转大雨" tem1="21" tem2="18" windState="东南风小于3级转3-4级"/>
<city quName="海南" pyName="hainan" cityname="海口" state1="4" state2="1" stateDetailed="雷阵雨转多云" tem1="32" tem2="25" windState="东南风3-4级"/>
<city quName="内蒙古" pyName="neimenggu" cityname="呼和浩特" state1="0" state2="0" stateDetailed="晴" tem1="24" tem2="12" windState="西南风转西北风3-4级"/>
<city quName="新疆" pyName="xinjiang" cityname="乌鲁木齐" state1="0" state2="0" stateDetailed="晴" tem1="29" tem2="17" windState="微风"/>
<city quName="西藏" pyName="xizang" cityname="拉萨" state1="3" state2="7" stateDetailed="阵雨转小雨" tem1="22" tem2="11" windState="微风"/>
<city quName="青海" pyName="qinghai" cityname="西宁" state1="3" state2="3" stateDetailed="阵雨" tem1="20" tem2="10" windState="微风"/>
<city quName="宁夏" pyName="ningxia" cityname="银川" state1="2" state2="1" stateDetailed="阴转多云" tem1="27" tem2="14" windState="北风3-4级转微风"/>
<city quName="甘肃" pyName="gansu" cityname="兰州" state1="3" state2="1" stateDetailed="阵雨转多云" tem1="25" tem2="15" windState="微风"/>
<city quName="河北" pyName="hebei" cityname="石家庄" state1="7" state2="1" stateDetailed="小雨转多云" tem1="30" tem2="22" windState="北风小于3级"/>
<city quName="河南" pyName="henan" cityname="郑州" state1="4" state2="2" stateDetailed="雷阵雨转阴" tem1="31" tem2="24" windState="微风"/>
<city quName="湖北" pyName="hubei" cityname="武汉" state1="1" state2="3" stateDetailed="多云转阵雨" tem1="35" tem2="26" windState="微风"/>
<city quName="湖南" pyName="hunan" cityname="长沙" state1="0" state2="0" stateDetailed="晴" tem1="36" tem2="28" windState="南风小于3级"/>
<city quName="山东" pyName="shandong" cityname="济南" state1="9" state2="3" stateDetailed="大雨转阵雨" tem1="30" tem2="21" windState="南风3-4级转北风小于3级"/>
<city quName="江苏" pyName="jiangsu" cityname="南京" state1="1" state2="1" stateDetailed="多云" tem1="35" tem2="27" windState="南风3-4级"/>
<city quName="安徽" pyName="anhui" cityname="合肥" state1="0" state2="1" stateDetailed="晴转多云" tem1="35" tem2="27" windState="西南风3-4级"/>
<city quName="山西" pyName="shanxi" cityname="太原" state1="1" state2="0" stateDetailed="多云转晴" tem1="27" tem2="16" windState="微风转西北风小于3级"/>
<city quName="陕西" pyName="sanxi" cityname="西安" state1="21" state2="1" stateDetailed="小到中雨转多云" tem1="25" tem2="20" windState="西风小于3级"/>
<city quName="四川" pyName="sichuan" cityname="成都" state1="22" state2="22" stateDetailed="中到大雨" tem1="28" tem2="23" windState="北风3-4级"/>
<city quName="云南" pyName="yunnan" cityname="昆明" state1="1" state2="1" stateDetailed="多云" tem1="27" tem2="17" windState="微风"/>
<city quName="贵州" pyName="guizhou" cityname="贵阳" state1="1" state2="1" stateDetailed="多云" tem1="29" tem2="21" windState="南风小于3级"/>
<city quName="浙江" pyName="zhejiang" cityname="杭州" state1="1" state2="1" stateDetailed="多云" tem1="35" tem2="26" windState="东风小于3级"/>
<city quName="福建" pyName="fujian" cityname="福州" state1="1" state2="1" stateDetailed="多云" tem1="36" tem2="26" windState="微风"/>
<city quName="江西" pyName="jiangxi" cityname="南昌" state1="0" state2="0" stateDetailed="晴" tem1="35" tem2="27" windState="微风"/>
<city quName="广东" pyName="guangdong" cityname="广州" state1="0" state2="0" stateDetailed="晴" tem1="35" tem2="25" windState="微风"/>
<city quName="广西" pyName="guangxi" cityname="南宁" state1="1" state2="1" stateDetailed="多云" tem1="35" tem2="25" windState="南风小于3级"/>
<city quName="北京" pyName="beijing" cityname="北京" state1="7" state2="1" stateDetailed="小雨转多云" tem1="28" tem2="22" windState="微风"/>
<city quName="天津" pyName="tianjin" cityname="天津" state1="3" state2="1" stateDetailed="阵雨转多云" tem1="28" tem2="23" windState="南风转西北风3-4级"/>
<city quName="上海" pyName="shanghai" cityname="上海" state1="1" state2="1" stateDetailed="多云" tem1="35" tem2="28" windState="南风3-4级"/>
<city quName="重庆" pyName="chongqing" cityname="重庆" state1="1" state2="8" stateDetailed="多云转中雨" tem1="36" tem2="23" windState="微风"/>
<city quName="香港" pyName="xianggang" cityname="香港" state1="1" state2="1" stateDetailed="多云" tem1="33" tem2="27" windState="微风"/>
<city quName="澳门" pyName="aomen" cityname="澳门" state1="1" state2="1" stateDetailed="多云" tem1="34" tem2="27" windState="微风"/>
<city quName="台湾" pyName="taiwan" cityname="台北" state1="7" state2="10" stateDetailed="小雨转暴雨" tem1="32" tem2="27" windState="微风"/>
<city quName="西沙" pyName="xisha" cityname="西沙" state1="8" state2="8" stateDetailed="中雨" tem1="31" tem2="26" windState="东北风转西风5-6级"/>
<city quName="南沙" pyName="nanshadao" cityname="南沙" state1="4" state2="4" stateDetailed="雷阵雨" tem1="32" tem2="27" windState="西南风5-6级"/>
<city quName="钓鱼岛" pyName="diaoyudao" cityname="钓鱼岛" state1="2" state2="1" stateDetailed="阴转多云" tem1="28" tem2="26" windState="东风4-5级转东南风5-6级"/>
</china>
2、具体解析程序如下:
package Demo2; import java.io.File;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader; public class XMLTest01 {
public static void main(String args[]) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(new File("D:/province.xml"));
Element rootElm = document.getRootElement();
//Element root1Elm = rootElm.element("city");
@SuppressWarnings("rawtypes")
List nodes = rootElm.elements("city");
for (@SuppressWarnings("rawtypes")
Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
System.out.println("quName:" + elm.attributeValue("quName")
+ " pyName:" + elm.attributeValue("pyName") + " cityname:"
+ elm.attributeValue("cityname") + " state1:"
+ elm.attributeValue("state1") + " state2:"
+ elm.attributeValue("state2"));
}
try {
Document doc = reader.read(new File("D:/province.xml"));
@SuppressWarnings("rawtypes")
List projects = doc.selectNodes("china/city");
@SuppressWarnings("rawtypes")
Iterator it = projects.iterator();
while (it.hasNext()) {
Element elm = (Element) it.next();
System.out.println("quName:" + elm.attributeValue("quName")
+ " pyName:" + elm.attributeValue("pyName")
+ " cityname:" + elm.attributeValue("cityname")
+ " state1:" + elm.attributeValue("state1")
+ " state2:" + elm.attributeValue("state2"));
} } catch (Exception ex) {
ex.printStackTrace();
}
} }
3、项目中需要导入的架包:

4、运行结果如下图所示:

java dom4j解析xml实例(2)的更多相关文章
- java dom4j解析xml实例
java利用dom4j解析xml 需要的jar包: dom4j官方网站在 http://www.dom4j.org/ 下载dom4j-1.6.1.zip 解开后有两个包,仅操作XML文档的话把dom4 ...
- java dom4j解析xml实例(3)
代码运行前需要先导入dom4j架包. 需要解析的XML文件test.xml如下: <students> <student age="25"><!--如 ...
- java dom4j 解析xml使用实践
参考:https://dom4j.github.io/ http://www.cnblogs.com/liuling/archive/2013/02/05/dom4jxml.html 常用api: 1 ...
- java dom4j解析xml用到的几个方法
1. 读取并解析XML文档: SAXReader reader = new SAXReader(); Document document = reader.read(new File(fileName ...
- dom4j解析xml实例(2)
dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar.jaxen-1.1-beta-6.jar ...
- dom4j解析xml实例
dom4j是一个java的XML API,类似jdom,用来读写XML文件,它性能优异.功能强大和极易使用等特点 所用jar包:dom4j-1.6.1.jar 需要解析的xml文件:people.xm ...
- JAVA DOM4j解析XML数据到自定义javabean
我们获取xml中的数据,一般以面向对象的思想去处理这些数据.因此,我们需要自定义类来封装解析出来的数据,以方便我们操作这些数据. 自定义的java类,称为javabean. 自定义Contact类代码 ...
- 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML
原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...
- JAVA 使用Dom4j 解析XML
[转自] http://blog.csdn.net/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载 ...
随机推荐
- oracle 备份操作流程
Oracle 库表导出步骤 例如,要导出wcsr用户下的所有表,已知用户名/密码:wcsr/wcsr_woer 首先打开cmd.exe 其次创建备份目录,最好目录不包含空格和中文名 md d:\ora ...
- ios ViewController的生命周期分析和基本使用逻辑
按结构可以对iOS的所有ViewController分成两类:1.主要用于展示内容的ViewController,这种ViewController主要用于为用户展示内容,并与用户交互,如UITable ...
- java泛型小问题
几年前当Java5还未正式发布的时候,看到过一些人写的介绍Tiger中的新特性,当时对我第一感觉冲击最大的就是泛型(generics)和注释(annotation),因为它们直接影响了我们编码的语法习 ...
- MySQL 的实时性能监控利器【转】
操作系统及MySQL数据库的实时性能状态数据尤为重要,特别是在有性能抖动的时候,这些实时的性能数据可以快速帮助你定位系统或MySQL数据库的性能瓶颈,就像你在Linux系统上使用「top,sar,io ...
- px和sp什么区别
都表示像素,只不过sp通常表示文字大小: <TextView android:layout_width="wrap_content" android:layout_heigh ...
- Qt学习之系列[9] – QCoreApplication:processEvents()可能会引起递归,导致栈溢出崩溃
api含义:QCoreApplication::processEvents() 将处理所有事件队列中的事件并返回给调用者. 问题描述: 当主线程在某个槽函数里正在执行processEvents时, 刚 ...
- ref与out之间的区别整理 摘自与望楼http://blog.csdn.net/xiaoning8201/article/details/6893154
ref和out都是C#中的关键字,所实现的功能也差不多,都是指定一个参数按照引用传递. 对于编译后的程序而言,它们之间没有任何区别,也就是说它们只有语法区别. 总结起来,他们有如下语法区别: .ref ...
- 分页打印控制 摘自于网络:http://www.cnblogs.com/joinger/articles/1807517.html
代码 style="page-break-after:always;"> 利用CSS控制打印 放在这里,算是一个备份 <style> @media print{ ...
- 网站网址前的小logo
认识网页前小图标 1.能在浏览器标签.地址栏左边和收藏夹栏显示小图标的网站,其网站都是使用了其名称为"favicon.ico"图标文件,格式为ico格式,图标大小一般为16*16, ...
- HDU 5234 Happy birthday 动态规划(三维数组)
题目大意:过生日,有一个N*M的表格,每个位置都有一块一定重量的蛋糕你可以选择吃完或者不吃,从(1,1)走到(n,m),每次只能向右走或向下走,最多能吃k重量的蛋糕.问你最多能吃多少蛋糕. 题目思路: ...