您的位置:首页 > Web前端 > JavaScript

使用DOM4J解析XML的一个例子

2012-06-18 22:38 423 查看
这是一本书的DEMO。

(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>zhang@aaa.com</email>
<tel>(020)12345678</tel>
<address>广东省广州市</address>
</linkman>
</linkmans>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息