采用dom4j解析xml过程

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

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


    dom4j
      dom4j
      1.6.1

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

导入类库包:

import org.dom4j.DocumentHelper;

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

Document document = DocumentHelper.parseText(xmlStr);

假如给定的xml字符串为:

  
  
     
         张三
         26
         [email protected]
         zhangsan
         zhangsan.com
     
    
        李四
        27
        [email protected]
        lisi
        lisi.com
    
    
        王五
        27
        [email protected]
        wangwu
        wangwu.com
    

解析过程如下:

List> personList = new ArrayList>();
try {
    Document document = DocumentHelper.parseText(xmlStr);

    Element rootElement = document.getRootElement();// 获取根节点
    for (Iterator iterator = rootElement.elementIterator(); iterator.hasNext();) {
        Element element = (Element) iterator.next();

        Map personMap = new HashMap();

        Attribute genderAttr = element.attribute("gender");//获取元素的gender属性对象
        personMap.put("gender", StringUtils.trim(genderAttr.getValue()));// 获取属性对象的值并插入map中,键名为gender

        for (Iterator iterator2 = element.elementIterator(); iterator2.hasNext();) {
            Element element2 = (Element) iterator2.next();

            personMap.put(element2.getName(), element2.getTextTrim());// 将子节点的名称和值分别插入map中
        }
        personList.add(personMap);//将map插入list中
    }
} catch (DocumentException e) {
    e.printStackTrace();
}
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=男性}]

你可能感兴趣的:(Java)