附件是由郑州蜂鸟科技有限公司周源整理的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。每种解析方式都有其特性和适用场景,下面将详细探讨这四种解析方法。 1. DOM(Document Object Model) DOM解析器将整个XML文档加载到内存中,形成一...
总结来说,XML解析在Java开发中扮演着重要角色,dom4j和jdom是两个常用的XML处理库,它们各有特点,提供了丰富的功能来帮助开发者处理XML文档。理解这两个库的差异和优势,以及如何在项目中正确使用它们,对于提升...
6. **DOM4J与JDOM的对比**: JDOM是另一个Java XML库,它专注于DOM模型。相比JDOM,DOM4J在功能上更强大,API设计更加面向对象,而且性能也更好。DOM4J对XPath的支持和对SAX的集成使其在处理复杂XML任务时更具优势...
DOM4J和JDOM是两种常用的Java XML处理库,它们都是为了方便开发者解析、操作和创建XML文档。本文将深入探讨这两个库...这两个库的jar包(dom4j-1.6.1.jar和jdom-2.0.5.jar)可以直接导入到项目中,为XML处理提供便利。
8. **与JAXB和JDOM的比较**:dom4j相比JAXB(Java Architecture for XML Binding)和JDOM,提供了更丰富的API和功能,同时在某些场景下性能更优,但JAXB和JDOM在特定任务上(如Java对象和XML之间的自动绑定)可能更...
为了处理XML文档,Java提供了多种API,其中最常用的包括DOM、SAX、DOM4J和JDOM。以下是对这些方法的详细介绍: 1. DOM(Document Object Model) DOM是一种树形结构的API,它将整个XML文档加载到内存中,形成一个...
DOM4J 是一个基于 Java 的 XML 解析器,提供了与 DOM 相似的 API,但是性能更好。DOM4J 解析器的优点是: * 性能更好,占用内存较少 * 提供了与 DOM 相似的 API,易于使用 然而,DOM4J 解析器也存在一些缺点: * ...
4. **DOM4J与其他XML库的比较** - 相比Java内置的DOM API,DOM4J更易于理解和使用,同时也更快。 - 与JDOM相比,DOM4J提供了更多的功能,例如XPath支持和SAX解析。 - 虽然DOM4J不是JAXP(Java API for XML ...
本篇将详细介绍使用DOM4j.Jar和JDOM.jar这两个Java库来解析XML文件的方法。 **DOM4j** DOM4j是一个灵活且功能强大的Java XML API,它提供了全面的XML处理解决方案,包括读取、写入、操作和转换XML文档。DOM4j的...
3. **XML与Java对象映射**:dom4j提供了将XML数据映射到Java对象以及将Java对象转换为XML的机制,这在处理数据交换或序列化时非常有用。 4. **XPath支持**:XPath是一种在XML文档中查找信息的语言,dom4j支持XPath ...
《深入解析DOM4J——基于Java的XML处理框架》 DOM4J,作为一个强大的Java XML API,是处理XML文档的主流工具之一。它提供了一套简单而高效的方式来操作XML文档,包括读取、写入、修改和遍历XML结构。在Java开发中,...
Apache POI用于Excel、Word和PowerPoint的处理,DOM4J则帮助处理XML文档,而XMLBeans提供了XML与Java对象之间的无缝转换。结合这三个库,开发者可以方便地在Java应用中处理各种复杂的Office文档和XML数据。
在Java中,有多种方式来解析和操作XML文档,包括DOM(Document Object Model)、SAX(Simple API for XML)、JDOM和DOM4J。每种方法都有其特点和适用场景,相应的,它们也需要引入特定的库文件。以下是对这些方法...
3. Dom4j与JDom的比较: - 性能:两者性能相差不大,但在处理大型XML文档时,由于JDom完全加载到内存,可能比Dom4j消耗更多资源。 - API复杂度:JDom的API设计相对更直接,易于上手;而Dom4j虽然功能更全面,但API...
这个版本包含了`jdom-1.0.jar`包,它是JDOM 1.0的核心库文件,包含了所有必要的类和方法来处理XML。通过导入这个jar包,开发者可以在他们的项目中直接使用JDOM的功能,如读取XML文件、创建新的XML结构、修改现有XML...
dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件,可以在SourceForge上找到它。在IBM developerWorks上面还可以...
为了方便地操作XML文件,开发者通常会利用特定的库,如DOM4J和JDOM。这两个库是Java中处理XML的流行选择,提供了强大的API来读取、写入、修改XML文档。 **DOM4J库(dom4j-1.6.1.jar)** DOM4J是一个开源的Java库,...
**DOM4J库详解** DOM4J是一款强大的Java XML API,它提供了丰富的功能,使得在Java应用程序中处理XML文档变得简单而高效。...结合其轻量级的设计和对XPath的支持,DOM4J成为了Java开发者的首选XML库之一。
《深入解析DOM4J与JDOM:XML处理的利器》 在信息技术领域,XML(Extensible Markup Language)作为数据交换和存储的标准格式,被广泛应用于各种应用程序之间。XML文件的解析是开发过程中不可或缺的一部分,而DOM4J...
java中四种操作(dom、sax、jdom、dom4j)xml方式详解与