`
baobaocao521
  • 浏览: 30520 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

XML解析之Dom4j解析

阅读更多
package xml;

import java.util.HashMap;

/**
 * 测试Dom4jReadExmple解析的情况
 * 
 * @author cuiweibing
 * @since 2007.8.10
 */
public class TestDom4jReadExmple
{
    public static void main(String[] args)
    {
        try
        {
            // 获取解析完后的解析信息
            HashMap<String, String> hashMap;
            Dom4jReadExmple drb = new Dom4jReadExmple();
            // 遍历整个XML文件
            hashMap = new HashMap<String, String>();
            drb.iterateWholeXML("E:/student.xml", hashMap);
            System.out.println("姓名\t年龄\t学院\t学院领导\t电话\t\t备注");
            for (int i = 0; i < hashMap.size(); i += 6)
            {
                int j = i / 6;
                System.out.print(hashMap.get("name" + j) + "\t");
                System.out.print(hashMap.get("student-age" + j) + "\t");
                System.out.print(hashMap.get("college" + j) + "\t");
                System.out.print(hashMap.get("college-leader" + j) + "\t");
                System.out.print(hashMap.get("telephone" + j) + "\t");
                System.out.println(hashMap.get("notes" + j) + "\t");
            }
        }
        catch (Exception ex)
        {
            ex.printStackTrace();
        }
    }
}

 

=========低调的分割线====================

 

package xml;

import java.io.File;
import java.util.HashMap;
import java.util.Iterator;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

/**
 * 利用dom4j进行XML编程
 * 
 * @author cuiweibing
 * @since 2007.8.10
 */
public class Dom4jReadExmple
{
    /**
     * 遍历整个XML文件,获取所有节点的值与其属性的值,并放入HashMap中
     * 
     * @param filename String 待遍历的XML文件(相对路径或者绝对路径)
     * @param hm HashMap 存放遍历结果,格式:<nodename,nodevalue>或者<nodename+attrname,attrvalue>
     */
    public void iterateWholeXML(String filename, HashMap<String, String> hm)
    {
        SAXReader saxReader = new SAXReader();
        try
        {
            Document document = saxReader.read(new File(filename));
            Element root = document.getRootElement();
            // 用于记录学生编号的变量
            int num = -1;
            // 遍历根结点(students)的所有孩子节点(肯定是student节点)
            for (Iterator iter = root.elementIterator(); iter.hasNext();)
            {
                Element element = (Element)iter.next();
                num++;
                // 获取person节点的age属性的值
                Attribute ageAttr = element.attribute("age");
                if (ageAttr != null)
                {
                    String age = ageAttr.getValue();
                    if (age != null && !age.equals(""))
                    {
                        hm.put(element.getName() + "-" + ageAttr.getName() + num, age);
                    }
                    else
                    {
                        hm.put(element.getName() + "-" + ageAttr.getName() + num, "20");
                    }
                }
                else
                {
                    hm.put(element.getName() + "-age" + num, "20");
                }
                // 遍历student结点的所有孩子节点(即name,college,telphone,notes),并进行处理
                for (Iterator iterInner = element.elementIterator(); iterInner.hasNext();)
                {
                    Element elementInner = (Element)iterInner.next();
                    if (elementInner.getName().equals("college"))
                    {
                        hm.put(elementInner.getName() + num, elementInner.getText());
                        // 获取college节点的leader属性的值
                        Attribute leaderAttr = elementInner.attribute("leader");
                        if (leaderAttr != null)
                        {
                            String leader = leaderAttr.getValue();
                            if (leader != null && !leader.equals(""))
                            {
                                hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, leader);
                            }
                            else
                            {
                                hm.put(elementInner.getName() + "-" + leaderAttr.getName() + num, "leader");
                            }
                        }
                        else
                        {
                            hm.put(elementInner.getName() + "-leader" + num, "leader");
                        }
                    }
                    else
                    {
                        hm.put(elementInner.getName() + num, elementInner.getText());
                    }
                }
            }
            
        }
        catch (DocumentException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

 

分享到:
评论

相关推荐

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    dom4j解析xml详解

    DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    dom4j 解析(读取) xml 节点数据

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    xmldom4j解析

    四、DOM4J处理循环节点 在处理包含循环节点的XML时,可以使用迭代器或XPath查询来遍历这些节点。例如,遍历所有`&lt;item&gt;`元素: ```java Element root = document.getRootElement(); List&lt;Element&gt; items = root....

    dom,dom4j,sax 解析xml文件实例

    本文将深入探讨DOM、DOM4J和SAX三种常用的XML解析方法,并结合具体的实例进行详细讲解。 首先,DOM(Document Object Model)是W3C组织推荐的一种XML解析标准。它将整个XML文档加载到内存中,构建一个树形结构,...

    java解析XML dom4j dom4j-1.6.1.jar

    Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    DOM4J xml解析工具

    DOM4J作为XML解析工具,其核心功能包括: 1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,...

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    dom4j.jar包,java解析xml dom4j.jar包

    **DOM4J库详解** DOM4J是一款强大的Java XML API,它提供了丰富的功能,使得在Java应用程序中处理XML文档变得简单而高效。...结合其轻量级的设计和对XPath的支持,DOM4J成为了Java开发者的首选XML库之一。

    XML的四种解析器(dom,sax,jdom,dom4j)原理及性能比较,超详细

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

    XML解析-dom4j.jar-jdom.jar

    总结来说,XML解析在Java开发中扮演着重要角色,dom4j和jdom是两个常用的XML处理库,它们各有特点,提供了丰富的功能来帮助开发者处理XML文档。理解这两个库的差异和优势,以及如何在项目中正确使用它们,对于提升...

    dom4j 解析写入xml

    1、xml文档解析 2、 dom4j解析xml 3、实现xml文件解析 xml字符串解析 xml MAP键值对解析 4、实现xml写入与生成文件

    开源XML解析包dom4j

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

Global site tag (gtag.js) - Google Analytics