(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>