使用DOM4J解析XML的一个例子

(1)创建ParseXML用来封装DOM4J解析XML

package com.system.demo;

import java.io.File;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;

public class ParseXML {

	StringBuffer result = new StringBuffer();
	Document doc = null;

	// 无参数构造方法
	public ParseXML() {
	}

	// 读取传入的XML文件,返回XML文档对象
	public void read(String fileName) throws Exception {
		SAXReader reader = new SAXReader();
		doc = reader.read(new File(fileName));
	}

	// 传入根元素启动递归遍历
	public void treeWalk() {
		treeWalk(doc.getRootElement());
	}

	// 递归遍历XML文档
	public void treeWalk(Element element) {
		for (int i = 0, size = element.nodeCount(); i < size; i++) {
			Node node = element.node(i);
			// 如果子节点是子元素,继续递归
			if (node instanceof Element) {
				if (node.getText().trim().length() > 0)
					result.append(node.getName() + " = ");
				else
					result.append("<br>联系人记录<br>");
				treeWalk((Element) node);
			} else {
				// 否则就输出子节点的文本值
				if (node.getText().trim().length() > 0)
					result.append(node.getText() + "<br>");
			}
		}
	}

	// 取得XML的解析结果
	public String getResult() {
		return result.toString();
	}

}

调用代码(JSP中的一部分):

  	//取得xml的绝对物理路径
  	String fileName = request.getRealPath("test.xml");
  	// 读取XML文件
  	myParse.read(fileName);
  	//遍历内存中的XML文件
  	myParse.treeWalk();
  	//输出结果 用于JSP输出
  	out.println(myParse.getResult());
  

test.xml

<?xml version="1.0" encoding="UTF-8"?>
<linkmans>
    <linkman>
        <name>张三</name>
        <id>001</id>
        <company>A公司</company>
        <email>[email protected]</email>
        <tel>(020)12345678</tel>
        <address>广东省广州市</address>
    </linkman>
</linkmans>
 

猜你喜欢

转载自guanzhenxing.iteye.com/blog/1563513