使用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() + " = ");elseresult.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>?