使用dom4j解析xml

dom4j是一个非常非常优秀的java xml api,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 java软件都在使用 dom4j来读写 xml,特别值得一提的是连 sun 的 jaxm也在用 dom4j。

如果项目中要添加dom4j类库支持,需要将工具包加载到项目类路径下,或采用maven包管理的话可以在pom.xml里边添加项目包依赖即可,如下:

1 <dependency>
2     <groupId>dom4j</groupId>
3       <artifactId>dom4j</artifactId>
4       <version>1.6.1</version>
5 </dependency>

假如给定了一条xml字符串,需要将字符串里边的数据分别提取出来。这种情况在一些标准的api接口里边是很常见的,那么如何对xml字符串进行解析呢?

导入类库包:

1 import org.dom4j.DocumentHelper;

采用DocumentHelper#parseText()将xml字符串转换为Document对象,如下:

1 Document document = DocumentHelper.parseText(xmlStr);

假如给定的xml字符串为:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <persons>
 3     <person gender="男性">
 4         <name>张三</name>
 5         <age>26</age>
 6         <email>[email protected]</email>
 7         <englishName>zhangsan</englishName>
 8         <website>zhangsan.com</website>
 9     </person>
10     <person gender="男性">
11         <name>李四</name>
12         <age>27</age>
13         <email>[email protected]</email>
14         <englishName>lisi</englishName>
15         <website>lisi.com</website>
16     </person>
17     <person gender="男性">
18         <name>王五</name>
19         <age>27</age>
20         <email>[email protected]</email>
21         <englishName>wangwu</englishName>
22         <website>wangwu.com</website>
23     </person>
24 </persons>

解析过程如下:

 1 ArrayList<HashMap<String, String>> personList = new ArrayList<HashMap<String, String>>();
 2 try {
 3     Document document = DocumentHelper.parseText(xmlStr);
 4
 5     Element rootElement = document.getRootElement();// 获取根节点
 6     for (Iterator<?> iterator = rootElement.elementIterator(); iterator.hasNext();) {
 7         Element element = (Element) iterator.next();
 8
 9         HashMap<String, String> personMap = new HashMap<String, String>();
10
11         Attribute genderAttr = element.attribute("gender");//获取元素的gender属性对象
12         personMap.put("gender", StringUtils.trim(genderAttr.getValue()));// 获取属性对象的值并插入map中,键名为gender
13
14         for (Iterator<?> iterator2 = element.elementIterator(); iterator2.hasNext();) {
15             Element element2 = (Element) iterator2.next();
16
17             personMap.put(element2.getName(), element2.getTextTrim());// 将子节点的名称和值分别插入map中
18         }
19
20         personList.add(personMap);//将map插入list中
21     }
22 } catch (DocumentException e) {
23     e.printStackTrace();
24 }
25 System.out.println(personList);

打印结果如下:

[{englishName=zhangsan, website=zhangsan.com, [email protected], age=26, name=张三, gender=男性}, {englishName=lisi, website=lisi.com, [email protected], age=27, name=李四, gender=男性}, {englishName=wangwu, website=wangwu.com, [email protected], age=27, name=王五, gender=男性}]
时间: 2024-10-21 18:10:33

使用dom4j解析xml的相关文章

【收藏用】--切勿转载JAVA 使用Dom4j 解析XML

原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载dom4j-1.6.1.jar (2)下载junit-4.10.jar 2.温馨提示 解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来,有三种方式: (1)自己创建Document对象   Document docu

转:在java中使用dom4j解析xml

在java中使用dom4j解析xml 虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 xml文档: <?xml version="1.0" encod

使用DOM4J解析XMl文件与读取XML文件

XML文件 1 <?xml version="1.0" encoding="UTF-8"?> 2 <bookstore> 3 <book id="1"> 4 <name>冰与火之歌</name> 5 <author>乔治马丁</author> 6 <year>2014</year> 7 <price>89</price&g

java使用dom4j解析xml

目标:将指定XML进行解析,以键=值的方式返回指定节点下的数据 所需要的jar包:dom4j1.6.1.jar.jaxen-1.1.jar <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://s

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="d

使用dom4j解析XML文档

dom4j的包开源包,不属于JDK里面,在myeclipse中要单独导入在项目中,这里不累赘了 做这个过程,很慢,因为很多方法没用过不熟悉,自己得去查帮助文档,而且还得去试,因为没有中文版,英文翻译不准确,也会导致多个同名的方法理解和用法不同 XML: <?xml version="1.0" encoding="utf-8"?> <students> <student age="25"> <name>

【java项目实战】dom4j解析xml文件,连接Oracle数据库

简介 dom4j是由dom4j.org出品的一个开源XML解析包.这句话太官方,我们还是看一下官方给出的解释.如下图: dom4j是一个易于使用的.开源的,用于解析XML,XPath和XSLT等语言的库.它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP等编程标准. 特点 dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用的特点,同时它也是一个开放源代码的软件.如今你可以看到越来越多的Java软件都在使用dom4j来读写XML,例

javaweb dom4j解析xml文档

1.什么是dom4j dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的.dom4j是一个十分优秀的JavaXML API,具有性能优异.功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它.在IBM developerWorks上面还可以找到一篇文章,对主流的Java XML API进行的性能.功能和易用性的评测,所以可以知道dom4j无论在哪个方面都是非常出色的.如今可以看到越

XML学习笔记(五):使用 jdom和dom4j 解析XML

XML解析的详细分析与jaxp解析XML详见:XML学习笔记(四):使用 DOM和SAX 解析XML 一.JDom 1.创建XML文件: 1)Document类即代表整个XML文档,把生成的 Document 利用 XMLOutputter 类输出即可. 2)映射关系:元素:Element:属性:Attribute:注解:Comment:文本信息:Text: 3)注意:addContent()是追加,setContent()会覆盖. /** * 创建XML * * @throws IOExcep

dom4j解析XML的CURD操作

在开发JavaWeb项目中通常是利用XML配置文件来提高应用程序的访问效率,而在配置XML的同时,更多时候是对XML进行解析. 一.解析XML配置文件有两种机制: DOM和SAX的机制: DOM是将整个XML文件读到内容,形成一个倒状的树形结构. SAX是一个一个的将XML文件中的元素加载的内存,不会形成一个倒状的树形结构. 常用dom4j的api: 主要使用到SAXReader类 SAXReader:表示DOM4J解析器 saxReader.read():加载需要解析的xml文件,返回docu