使用DOM4J解析XML的一个例子

这是一本书的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>[email protected]</email>  
        <tel>(020)12345678</tel>  
        <address>广东省广州市</address>  
    </linkman>  
</linkmans> 




你可能感兴趣的:(dom4j)