dom4j遍历解析xml

1,dom4j相对于其他xml解析技术来说,具有性能好、速度快、功能强大、编写简单等特点,所以受到广泛应用。

2,本例基于 dom4j-1.6.1.jar 编写 通用解析示例工具类,架包可点击 该名称下载。

3,工具类不针对特定xml文档结构解析,一招制敌,解析任何文档结构的xml数据,小伙伴们可以通过工具类结合自己实际项目业务需求进行封装加工。

4, 一个xml文档。

<result>
	<dates>
		<rstate>success</rstate>
		<rcode>200</rcode>
		<databasic>
			<allcount>168649810</allcount>
			<pageno>1</pageno>
			<pagesize>2</pagesize>
		</databasic>
		<details>
			<record>
				<RID>494847331</RID>
				<IR_URLTITLE>境外非政府组织在华活动被纳入法治轨道</IR_URLTITLE>
				<IR_ABSTRACT>十二届全国人大常委会第二十次会议28日下午表决通过《中华人民共和国境外非政府组织境内活动管理法》。</IR_ABSTRACT>
				<IR_URLNAME>http://203.192.15.131/content/20160429/Articel02004BB.htm</IR_URLNAME>
				<IR_URLTIME>2017-01-01 00:00:00</IR_URLTIME>
				<IR_AUTHORS>null</IR_AUTHORS>
				<IR_SITENAME>新华每日电讯</IR_SITENAME>
				<IR_CHANNEL>要闻</IR_CHANNEL>
				<SY_INFOTYPE>7</SY_INFOTYPE>
				<IR_GROUPFLAG>0</IR_GROUPFLAG>
				<IR_COUNT1>null</IR_COUNT1>
				<IR_COUNT2>null</IR_COUNT2>
				<IR_COUNT3>null</IR_COUNT3>
				<IR_ACCOUNT_UID>null</IR_ACCOUNT_UID>
				<SY_BB_COMMON>null</SY_BB_COMMON>
			</record>
			<record>
				<RID>419928990</RID>
				<IR_URLTITLE>本报记者带您走进城市周边绿化现场</IR_URLTITLE>
				<IR_ABSTRACT>本报记者带您走进城市周边绿化现场</IR_ABSTRACT>
				<IR_URLNAME>http://paper.cynews.com.cn/File/yanduchenbao/2016-4-11/20160411093651.htm?id=176117</IR_URLNAME>
				<IR_URLTIME>2016-11-04 00:00:00</IR_URLTIME>
				<IR_AUTHORS>null</IR_AUTHORS>
				<IR_SITENAME>燕都晨报</IR_SITENAME>
				<IR_CHANNEL>null</IR_CHANNEL>
				<SY_INFOTYPE>7</SY_INFOTYPE>
				<IR_GROUPFLAG>0</IR_GROUPFLAG>
				<IR_COUNT1>null</IR_COUNT1>
				<IR_COUNT2>null</IR_COUNT2>
				<IR_COUNT3>null</IR_COUNT3>
				<IR_ACCOUNT_UID>null</IR_ACCOUNT_UID>
				<SY_BB_COMMON>null</SY_BB_COMMON>
			</record>
		</details>
	</dates>
</result>

5,一个保存xml结构的 实体。

package com.trs.xmldeal;

/**
 * 保存xml结构基本信息实体
 * @author zhaozuofa
 * 2016年5月9日 下午2:19:46
 *
 */
public class XmlParamer {
    // 节点属性
    private String xattribute;

    // 节点PATH
    private String xpath;

    // 节点值
    private String value;

    public XmlParamer(String xattribute, String xpath, String value) {
        this.xattribute = xattribute;
        this.xpath = xpath;
        this.value = value;
    }

    public String getXpath() {
        return xpath;
    }

    public void setXpath(String xpath) {
        this.xpath = xpath;
    }

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }

    public String getXattribute() {
        return xattribute;
    }

    public void setXattribute(String xattribute) {
        this.xattribute = xattribute;
    }
}

6,一个解析xml 的工具类

package com.trs.xmldeal;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultAttribute;

/**
 * Java递归遍历XML所有元素
 * @author zhaozuofa
 * 2016年5月9日 下午2:18:43
 *
 */
public class XmlParase {
    // private static Map xmlmap = new HashMap();
    //存储xml元素信息的容器
    private static ArrayList<Leaf> elemList = new ArrayList<Leaf>();

    public static void main(String args[]) throws DocumentException {
        XmlParase test = new XmlParase();
        String path = "d:\\test\\NewFile3.xml";
        // 读取XML文件
        SAXReader reader = new SAXReader();
        Document doc = reader.read(path);

        // 获取XML根元素
        Element root = doc.getRootElement();
        test.getElementList(root);
        String x = test.getListString(elemList);
        System.out.println("-----------解析结果------------\n" + x);
    }

    /**
     * 获取节点所有属性值
     * <功能详细描述>
     * @param element
     * @return
     * @see [类、类#方法、类#成员]
     */
    public String getNoteAttribute(Element element) {
        String xattribute = "";
        DefaultAttribute e = null;
        List list = element.attributes();
        for (int i = 0; i < list.size(); i++) {
            e = (DefaultAttribute) list.get(i);
            xattribute += " [name = " + e.getName() + ", value = " + e.getText() + "]";
        }
        return xattribute;
    }

    /**
     * 递归遍历方法
     * <功能详细描述>
     * @param element
     * @see [类、类#方法、类#成员]
     */
    public void getElementList(Element element) {
        List elements = element.elements();
        // 没有子元素
        if (elements.isEmpty()) {
            String xpath = element.getPath();
            String value = element.getTextTrim();
            elemList.add(new Leaf(getNoteAttribute(element), xpath, value));
        } else {
            // 有子元素
            Iterator it = elements.iterator();
            while (it.hasNext()) {
                Element elem = (Element) it.next();
                // 递归遍历
                getElementList(elem);
            }
        }
    }

    public String getListString(List elemList) {
        StringBuffer sb = new StringBuffer();
        for (Iterator it = elemList.iterator(); it.hasNext();) {
            XmlParamer xmlp = (XmlParamer) it.next();
            sb.append("xpath: " + xmlp.getXpath()).append(", value: ").append(xmlp.getValue());
            if (!"".equals(xmlp.getXattribute())) {
                sb.append(", Attribute: ").append(xmlp.getXattribute());
            }
            sb.append("\n");
        }
        return sb.toString();
    }
}
时间: 2024-10-15 12:13:49

dom4j遍历解析xml的相关文章

用Dom4j来解析XML文件

Dom4j jar包地址:https://pan.baidu.com/s/1eNExExlFHIecfW_6YkXpvw  提取码:w5om 首先解压Dom4j jar包,解压后如下 然后把  dom4j-1.6.1.jar  复制放到工程目录下(集成开发工具是myeclipse) 在myeclipse工程下直接右键dom4j-1.6.1.jar,点击Build Path → Add to Build Path myeclipse自动导入jar包,然后就可以使用jar包提供的接口了. 我们创建一

dom4j来解析xml,通过URL获取服务器端返回的字符串,java swing 实现的页面

1)使用dom4j来解析xml字符串内容 import org.dom4j.DocumentHelper; String domString = getDomString(); Document document = DocumentHelper.parseText(domString); List<Element> list = document.selectNodes("table/tr/td/div/div/span"); String str = list.get(

【dom4j】解析xml为map

dom4j解析xml文件 <?xml version="1.0" encoding="utf-8"?> <workflows> <queryRequest> <branchId>88037062</branchId> <merSysId>00000317</merSysId> <queryNo>948983692</queryNo> <billType&

dom4j递归解析XML字符串所有子节点

1 /** 2 * dom4j递归解析所有子节点 3 * 4 * @param childElements 5 * @param mapEle 6 * @return 7 */ 8 public Map<String, Object> getElementsToString(String print) { 9 //解析返回的xml字符串,生成document对象 10 Document document = null; 11 Map<String,Object> mapEle =

DOM4J方式解析XML文件

dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory dom4j是一个简单的开源库,用于处理XML. XPath和XSLT,它基于Java平台,使用Java的集合框架,全面集成了DOM,SAX和JAXP. dom4j下载地址:http://download.csdn.net/detail/ww6055/8880397 dom4j的使用 下载了dom4j项目之后,解压缩,将其jar包(我的当前版本叫做d

dom4j如何解析xml

简单解析自己定义的xml文件,首先,给解析xml文件的类来个构造方法: 1 public xmlData(File xmlFile) { 2 file = xmlFile; 3 try { 4 saxReader = new SAXReader(); 5 saxReader.setEncoding("UTF-8"); 6 doc = saxReader.read(this.file); 7 8 init(); 9 } catch (DocumentException e) { 10 t

DOM4J方式解析 XML

1.下载,引入dom4j jar包 2. SAXReader reader = new SAXReader(); try { Document doc = reader.read(new File("tree.xml")); //获取根节点 Element root = doc.getRootElement(); //遍历根节点的子节点 Iterator<Element> it = root.elementIterator(); while (it.hasNext()) {

java Dom 解析 XML 详细解答

Dom4j遍历解析XML测试 近来老和XML打交道,不深挖不行了.. 这是一个Dom4j解析XML的例子,为做复杂递归处理前期所写的例子.涵盖了XML的解析方面大部分核心API. 环境: Dom4j-1.6.1 Dom4j解析需要XML需要的最小类库为: dom4j-1.6.1.jar jaxen-1.1-beta-6.jar 目标: 解析一个xml,输出所有的属性和元素值. 测试代码: XML文件: <?xml version="1.0" encoding="GBK&

Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析xml四种方法.DOM.SAX.JDOM.DOM4j.XPath [引言] 目前在Java中用于解析XML的技术很多,主流的有DOM.SAX.JDOM.DOM4j,下文主要介绍这4种解析XML文档技术的使用.优缺点及性能测试. 一.[基础知识——扫盲] sax.dom是两种对xml文档进行解析的方法(