这是一本书的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>