Dom4j遍历解析XML测试

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Dom4j遍历解析XML测试

近来老和XML打交道,不深挖不行了。。

这是一个Dom4j解析XML的例子,为做复杂递归处理前期所写的例子。涵盖了XML的解析方面大部分核心API。

环境:

Dom4j-1.6.1

Dom4j解析需要XML需要的最小类库为:

dom4j-1.6.1.jar

jaxen-1.1-beta-6.jar

目标:

解析一个xml,输出所有的属性和元素值。

测试代码:

XML文件:

zhangsan

32

home add

com add

lisi

22

home add

com add

com add

解析代码:

package com.topsoft.test;

import org.dom4j.io.SAXReader;

import org.dom4j.Document;

import org.dom4j.DocumentException;

import org.dom4j.Element;

import org.dom4j.Node;

import java.util.Iterator;

import java.util.List;

import java.io.InputStream;

/**

* Created by IntelliJ IDEA.

* User: leizhimin

* Date: 2008-3-26 15:53:51

* Note: Dom4j遍历解析XML测试

*/

public class TestDom4j {

/**

* 获取指定xml文档的Docum ent对象,xml文件必须在classpath中可以找到

*

* @param xmlFilePath xml文件路径

* @return Document对象

*/

public static Docum ent parse2Document(String xmlFilePath) {

SAXReader reader = new SAXReader();

Docum ent docum ent = null;

try {

InputStream in =TestDom4j.class.getResourceAsStream(xmlFilePath); docum ent =reader.read(in);

} catch (Docum entException e) {

System.out.println(e.getMessage());

System.out.println("读取classpath下xmlFileName文件发生异常,请检查CL ASSPATH和文件名是否存在!");

e.printStackTrace();

}

return docum ent;

}

public static void testParseXMLData(String xmlFileName) {

//产生一个解析器对象

SAXReader reader = new SAXReader();

//将xml文档转换为Docum ent的对象

Docum ent docum ent =parse2Docum ent(xmlFileNam e);

//获取文档的根元素

Elem ent root =docum ent.getRootElement();

//定义个保存输出xml数据的缓冲字符串对象

StringBuffer sb = new StringBuffer();

sb.append("通过Dom4j解析XML,并输出数据:\n");

sb.append(xmlFileName + "\n");

sb.append("----------------遍历start----------------\n");

//遍历当前元素(在此是根元素)的子元素

for (Iterator i_pe = root.elem entIterator(); i_pe.hasNext();) {

Elem ent e_pe =(Element) i_pe.next();

//获取当前元素的名字

String person =e_pe.getName();

//获取当前元素的id和sex属性的值并分别赋给id,sex变量

String id = e_pe.attributeValue("id");

String sex =e_pe.attributeValue("sex");

String name =e_pe.element("name").getText();

String age =e_pe.element("age").getText();

//将数据存放到缓冲区字符串对象中

sb.append(person + ":\n");

sb.append("\tid=" + id + " sex=" + sex + "\n");

sb.append("\t" + "name=" +name + " age=" +age + "\n");

//获取当前元素e_pe(在此是person元素)下的子元素adds

Elem ent e_adds =e_pe.element("adds");

sb.append("\t" + e_adds.getName() + "\n");

//遍历当前元素e_adds(在此是adds元素)的子元素

for (Iterator i_adds =e_adds.elementIterator(); i_adds.hasNext();) { Elem ent e_add = (Element) i_adds.next();

String code =e_add.attributeValue("code");

String add =e_add.getTextTrim();

sb.append("\t\t" +e_add.getName() + ":" +" code=" +code + " va lue=\"" + add + "\"\n");

}

sb.append("\n");

}

相关文档
最新文档