码迷,mamicode.com
首页 > 其他好文 > 详细

使用dom4j解析xml

时间:2014-10-21 00:41:01      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   使用   java   for   sp   

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); 

bubuko.com,布布扣

假如给定的xml字符串为:

 1 <?xml version="1.0" encoding="UTF-8"?>  
 2 <persons>  
 3     <person gender="男性">
 4         <name>张三</name>
 5         <age>26</age>
 6         <email>zhangsan@gmail.com</email>
 7         <englishName>zhangsan</englishName>
 8         <website>zhangsan.com</website>
 9     </person>
10     <person gender="男性">
11         <name>李四</name>
12         <age>27</age>
13         <email>lisi@gmail.com</email>
14         <englishName>lisi</englishName>
15         <website>lisi.com</website>
16     </person>
17     <person gender="男性">
18         <name>王五</name>
19         <age>27</age>
20         <email>wangwu@gmail.com</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=zhangsan@gmail.com, age=26, name=张三, gender=男性}, {englishName=lisi, website=lisi.com, email=lisi@gmail.com, age=27, name=李四, gender=男性}, {englishName=wangwu, website=wangwu.com, email=wangwu@gmail.com, age=27, name=王五, gender=男性}]

使用dom4j解析xml

标签:style   blog   color   io   ar   使用   java   for   sp   

原文地址:http://www.cnblogs.com/liuriqi/p/4039243.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!