`
chenming47
  • 浏览: 94745 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

java对xml的处理--dom4j与jdom

阅读更多

附件是由郑州蜂鸟科技有限公司周源整理的java对xml的处理解决方案,具体介绍了dom4j及jdom的使用,感觉介绍的异常详细,欢迎大家下载使用。

注意:书中DOM4JParser.java中的readXMLInList()及readXMLInIterator()方法在遍历xml文档内容是有误,我已经做了改正,以下为修改后的代码:

 /**
     * 使用List方式遍历XML文档
     * 
     * @param url
     *            XML文件路径
     * @return 返回Company对象
     * @throws DocumentException
     *             使用SAXReader读取XML文档时需要处理该异常
     */
    @SuppressWarnings("unchecked")
    public Company readXMLInList(String url) throws DocumentException {
        // 创建公司对象
        Company comp = new Company();
        // 使用org.dom4j.io.包下DOM4J已经配置好的SAXReader读取XML文档。
        SAXReader reader = new SAXReader();
        reader.setEncoding("utf-8");// 设置读取文件的编码为UTF-8
        Document doc = reader.read(url); // 读取url指定的xml文件
        // 得到文档的根元素company
        Element root = doc.getRootElement();
        // 使用Element的attributeValue(String arg)方法读取XML文档中的公司信息,并为公司对象设置相关属性。
        comp.setAddress(root.attributeValue("address"));
        comp.setName(root.attributeValue("name"));

        // 通过elements(String arg)方法读取XML文档中的所有root节点下的department节点并返回一个List。
        List<Element> depts = root.elements("department");
        // 创建Department对象数组
        Department[] deptList = new Department[depts.size()];

        // 读取部门信息,并将部门对象添加至公司对象中。
        for (int i = 0; i < depts.size(); i++) {
            Department dept = new Department();
            // 使用List的get(int index)方法遍历List,返回列表中的每一项。
            Element deptEmt = depts.get(i);
            dept.setName(deptEmt.attributeValue("name"));
            dept.setNumber(deptEmt.attributeValue("deptNo"));

            // 通过Element的elements("nodeName")方法获得子节点并返回一个java标准列表对象
            List<Element> emps = deptEmt.elements("employee");
            // 根据得到的列表大小创建Employee对象数组
            Employee[] empList = new Employee[emps.size()];
            /*
             * 读取雇员信息,并将雇员对象添加至部门对象中。
             */
            for (int j = 0; j < emps.size(); j++) {
                Employee emp = new Employee();
                // 将XML中的employee节点转换为Employee对象emp,并设置对象属性。
                Element empEmt = emps.get(j);
                emp.setName(empEmt.getText());
                emp.setPosition(empEmt.attributeValue("position"));
                emp.setTelephone(empEmt.attributeValue("telephone"));
                // 将emp对象添加至Employee对象数组empList中
                empList[j] = emp;
            }
            // 将对象数组empList添加至部门对象dept的对象数组属性emp中。
            dept.setEmp(empList);
            // 将dept对象添加至Department对象数组deptList中。
            deptList[i] = dept;
        }
        /*
         * 将对象数组deptList添加至公司对象comp的对象数组属性deptList中, 并返回该公司对象。
         */
        comp.setDept(deptList);
        return comp;
    }

    /**
     * 使用Iterator方式遍历XML文档
     * 
     * @param url
     *            XML文件路径
     * @return 返回Company对象
     * @throws DocumentException
     *             使用SAXReader读取XML文档时需要处理该异常
     */
    @SuppressWarnings("unchecked")
    public Company readXMLInIterator(String url) throws DocumentException {
        // 创建公司对象
        Company comp = new Company();
        // 使用org.dom4j.io.包下DOM4J已经配置好的SAXReader读取XML文档。
        SAXReader reader = new SAXReader();
        reader.setEncoding("utf-8");// 设置读取文件的编码为UTF-8
        Document doc = reader.read(url); // 读取url指定的xml文件
        // 得到文档的根元素company
        Element root = doc.getRootElement();
        // 使用Element的attributeValue(String arg)方法读取XML文档中的公司信息,并为公司对象设置相关属性。
        comp.setAddress(root.attributeValue("address"));
        comp.setName(root.attributeValue("name"));

        // 创建Department对象数组
        Department[] deptList = new Department[(root.elements("department")).size()];
        /*
         * 本段代码解释:读取部门信息,并将部门对象添加至公司对象中。
         * for循环语句解释:生成遍历root节点下名称为department的所有元素节点的迭代器
         */
        for (Iterator deptIte = root.elementIterator("department"); deptIte.hasNext();) {
            int i = 0, j = 0;// 数组下标标志值
            Department dept = new Department();
            // 使用List的get(int index)方法遍历List,返回集合中的第 每一项。
            Element deptEmt = (Element) deptIte.next();
            dept.setName(deptEmt.attributeValue("name"));
            dept.setNumber(deptEmt.attributeValue("deptNo"));
            // 创建Employee对象数组
            Employee[] empList = new Employee[deptEmt.elements("employee").size()];

            /*
             * 本段代码:读取雇员信息,并将雇员对象添加至部门对象中。
             * for循环语句:生成遍历deptEmt节点下名称为employee的所有元素节点的迭代器
             */
            for (Iterator empIte = root.elementIterator("department"); deptIte.hasNext();) {
                Employee emp = new Employee();
                // 将XML中的employee节点转换为Employee对象emp。
                Element empEmt = (Element) empIte.next();
                emp.setName(empEmt.getText());
                emp.setPosition(empEmt.attributeValue("position"));
                emp.setTelephone(empEmt.attributeValue("telephone"));
                // 将emp对象添加至Employee对象数组empList中
                empList[j] = emp;
                j++;
            }
            // 将对象数组empList添加至部门对象dept的对象数组属性emp中。
            dept.setEmp(empList);
            // 将dept对象添加至Department对象数组deptList中。
            deptList[i] = dept;
            i++;
        }
        /*
         * 将对象数组deptList添加至公司对象comp的对象数组属性deptList中, 并返回该公司对象。
         */
        comp.setDept(deptList);
        return comp;
    }

 DOM4JParser.java中的XMLHandle()方法中的

 

 

写道
//1.修改company节点的address属性

company.attributeValue("address", "郑州市金水区文产路交叉口向东50米SOHO世纪城");


 

应该为:

// 1.修改company节点的address属性
            company.setAttributeValue("address", "郑州市金水区文产路交叉口向东50米SOHO世纪城");

 

 

分享到:
评论

相关推荐

    XML四种解析方式------DOM SAX JDOM DOM4J

    在处理XML文档时,有多种解析方式,包括DOM、SAX、JDOM和DOM4J。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...

    XML解析-dom4j.jar-jdom.jar

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

    xml(jdom-dom4j).rar_DOM4J_dom4j xml java

    6. **DOM4J与JDOM的对比**: JDOM是另一个Java XML库,它专注于DOM模型。相比JDOM,DOM4J在功能上更强大,API设计更加面向对象,而且性能也更好。DOM4J对XPath的支持和对SAX的集成使其在处理复杂XML任务时更具优势...

    dom4j和jdom的jar包

    DOM4J和JDOM是两种常用的Java XML处理库,它们都是为了方便开发者解析、操作和创建XML文档。本文将深入探讨这两个库...这两个库的jar包(dom4j-1.6.1.jar和jdom-2.0.5.jar)可以直接导入到项目中,为XML处理提供便利。

    dom4j-jar与dom4j解析xml文档介绍

    8. **与JAXB和JDOM的比较**:dom4j相比JAXB(Java Architecture for XML Binding)和JDOM,提供了更丰富的API和功能,同时在某些场景下性能更优,但JAXB和JDOM在特定任务上(如Java对象和XML之间的自动绑定)可能更...

    java操作xml dom dom4j sax jdom

    为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...

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

    DOM4J 是一个基于 Java 的 XML 解析器,提供了与 DOM 相似的 API,但是性能更好。DOM4J 解析器的优点是: * 性能更好,占用内存较少 * 提供了与 DOM 相似的 API,易于使用 然而,DOM4J 解析器也存在一些缺点: * ...

    dom4j-1.6.1

    4. **DOM4J与其他XML库的比较** - 相比Java内置的DOM API,DOM4J更易于理解和使用,同时也更快。 - 与JDOM相比,DOM4J提供了更多的功能,例如XPath支持和SAX解析。 - 虽然DOM4J不是JAXP(Java API for XML ...

    JAVA 解析XML 的JAr包 DOM4j.Jar JDOM.jar

    本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...

    dom4j-1.6.1.jar

    3. **XML与Java对象映射**:dom4j提供了将XML数据映射到Java对象以及将Java对象转换为XML的机制,这在处理数据交换或序列化时非常有用。 4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath ...

    dom4j-2.0.3.zip

    《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...

    poi-3.8-dom4j1.6.1-xmlbeans-2.3.0架包

    Apache POI用于Excel、Word和PowerPoint的处理,DOM4J则帮助处理XML文档,而XMLBeans提供了XML与Java对象之间的无缝转换。结合这三个库,开发者可以方便地在Java应用中处理各种复杂的Office文档和XML数据。

    java 操作xml(dom,sax,jdom,dom4j)需要的包

    在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...

    Java的Dom4j和JDom的jar包

    3. Dom4j与JDom的比较: - 性能:两者性能相差不大,但在处理大型XML文档时,由于JDom完全加载到内存,可能比Dom4j消耗更多资源。 - API复杂度:JDom的API设计相对更直接,易于上手;而Dom4j虽然功能更全面,但API...

    jdom-1.1.zip_java jdom_jdom-1.0.jar包_jdom-1.1_jdom-1.1.1.tar.gz

    这个版本包含了`jdom-1.0.jar`包,它是JDOM 1.0的核心库文件,包含了所有必要的类和方法来处理XML。通过导入这个jar包,开发者可以在他们的项目中直接使用JDOM的功能,如读取XML文件、创建新的XML结构、修改现有XML...

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。下载地址 .txt

    dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以...

    java 操作xml文件(dom4j-1.6.1.jar和jdom.jar)

    为了方便地操作XML文件,开发者通常会利用特定的库,如DOM4J和JDOM。这两个库是Java中处理XML的流行选择,提供了强大的API来读取、写入、修改XML文档。 **DOM4J库(dom4j-1.6.1.jar)** DOM4J是一个开源的Java库,...

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

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

    dom4j-jdom.rar

    《深入解析DOM4J与JDOM:XML处理的利器》 在信息技术领域,XML(Extensible Markup Language)作为数据交换和存储的标准格式,被广泛应用于各种应用程序之间。XML文件的解析是开发过程中不可或缺的一部分,而DOM4J...

    docx4j-3.3.7.jar fmath-mathml-java.jar jdom-2.0.6.jar

    标题和描述中提到的三个Java库文件——"docx4j-3.3.7.jar", "fmath-mathml-java.jar", 和 "jdom-2.0.6.jar",都是在Java开发环境中用于处理特定任务的重要组件。以下是关于这些库的详细解释: 1. **docx4j-3.3.7....

Global site tag (gtag.js) - Google Analytics