首页 > 代码库 > 使用dom4j解析xml
使用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>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中,键名为gender13 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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。