`
wxinpeng
  • 浏览: 589667 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

dom4j操作XML

阅读更多
虽然DOM4J 代表了完全独立的开发结果,但最初,它是JDOM 的一种智能分支。它合并了许多超出基本XML 文档表示的功能,包括集成的XPath 支持、XML Schema 支持以及用于大文档或流化文档的基于事件的处理。它还提供了构建文档表示的选项,它通过 DOM4J API 和标准DOM 接口具有并行访问功能。从 2000 下半年开始,它就一直处于开发之中。

  为支持所有这些功能,DOM4J 使用接口和抽象基本类方法。DOM4J 大量使用了API 中的 Collections 类,但是在许多情况下,它还提供一些替代方法以允许更好的性能或更直接的编码方法。直接好处是,虽然 DOM4J 付出了更复杂的 API 的代价,但是它提供了比 JDOM 大得多的灵活性。
  在添加灵活性、XPath 集成和对大文档处理的目标时,DOM4J 的目标与 JDOM 是一样的:针对 Java 开发者的易用性和直观操作。它还致力于成为比 JDOM 更完整的解决方案,实现在本质上处理所有 Java/XML 问题的目标。在完成该目标时,它比 JDOM 更少强调防止不正确的应用程序行为。
DOM4J 是一个非常非常优秀的Java XML API,具有性能优异、功能强大和极端易用使用的特点,同时它也是一个开放源代码的软件。如今你可以看到越来越多的 Java 软件都在使用 DOM4J 来读写 XML,特别值得一提的是连 Sun 的 JAXM 也在用 DOM4J。
 
注意:
dom4j1.6解压后有一个dom4j-1.6.1.jar文件,这就是应用时需要引入的类包,另外还有一个jaxen-1.1-beta-6.jarr文件,一般也需要引入,否则执行时可能抛java.lang.NoClassDefFoundError: org/jaxen/JaxenException异常,其他的包可以选择用之。
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jDemo {
	 public void createXML() {
	        //用工厂类创建一个document实例
	        Document doc = DocumentHelper.createDocument();
	        //创建根元素emps
	        Element rootEle = doc.addElement("emps");
	        //添加注释
	        rootEle.addComment("这是一个dom4j生成的xml文件");
	        //emps根节点下创建一个emp节点
	        Element empEle = rootEle.addElement("emp");
	        //emp添加属性id="1"
	        empEle.addAttribute("id", "1");
	        //emp节点下创建一个name节点
	        Element nameEle = empEle.addElement("name");
	        //name节点下创建一个文本节点zhangsan
	        nameEle.setText("zhangsan");
	        //再为name节点创建一个兄弟节点
	        Element sexEle = empEle.addElement("sex");
	        sexEle.setText("man");
	        //将document中的内容写入文件中
	        try {
	            Writer out = new FileWriter("F:\\emps.xml");
	            //格式化输出,类型IE浏览一样
	            OutputFormat format = OutputFormat.createPrettyPrint();
	            //OutputFormat format = OutputFormat.createCompactFormat();
	            format.setEncoding("UTF-8");
	            //创建写出对象
	            XMLWriter writer = new XMLWriter(out,format);
	            writer.write(doc);
	            writer.close();
	            System.out.println("生成emps.xml成功。");
	        } catch (IOException e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	            System.out.println("失败了。");
	        }
	    }

	 public void updateXML(){
	        try {
	            //创建读入对象
	            SAXReader reader = new SAXReader();
	            //创建document实例
	            Document doc = reader.read("F:\\emps.xml");
	            //查找节点emp下的id属性
	            List<Object> listAttr = doc.selectNodes("/emps/emp/@id");
	            Iterator<Object> itAttr = listAttr.iterator();
	            while(itAttr.hasNext()){
	                Attribute attr = (Attribute) itAttr.next();
	                //emp属性修改为001
	                attr.setValue("001");
	            }
	            //查找emp下的name节点
	            List<Object> listText = doc.selectNodes("/emps/emp/name");
	            Iterator<Object> itText = listText.iterator();
	            while(itText.hasNext()){
	                Element textEle = (Element) itText.next();
	                //name节点的文本内容修改为"张三"
	                textEle.setText("张三");
	            }
	            //查找emp节点
	            List<Object> listEle = doc.selectNodes("/emps/emp");
	            Iterator<Object> itEle = listEle.iterator();
	            while(itEle.hasNext()){
	                Element empEle = (Element) itEle.next();
	                //查找emp下的sex节点
	                Iterator<Object> itSex = empEle.elementIterator("sex");
	                while(itSex.hasNext()){
	                    Element sexEle = (Element) itSex.next();
	                    //删除sex节点
	                    empEle.remove(sexEle);
	                }
	            }
	            //创建写出流
	            Writer out = new FileWriter("F:\\emps(update).xml");
	            // 格式化输出
	            OutputFormat format = OutputFormat.createPrettyPrint();
	            //OutputFormat format = OutputFormat.createCompactFormat();
	            format.setEncoding("UTF-8");
	            //创建写出对象
	            XMLWriter writer = new XMLWriter(out,format);
	            writer.write(doc);
	            writer.close();
	            System.out.println("生成emps(update).xml成功。");
	            
	        } catch (Exception e) {
	            // TODO Auto-generated catch block
	            e.printStackTrace();
	        }
	 }
	public static void main(String[] args) {
		new Dom4jDemo().updateXML();

	}
}

 

分享到:
评论

相关推荐

    DOM4J 读取xml字符串

    **DOM4J 读取XML字符串** DOM4J 是一个非常强大的 Java XML API,它提供了丰富的功能,使得处理 XML 文件变得更加简单。DOM4J 的设计理念是简洁、灵活且高性能,它支持 SAX 和 DOM 解析,并提供了面向对象的接口。...

    dom4j操作xml

    在本文中,我们将深入探讨DOM4J如何进行XML操作,包括增加、删除和修改XML元素。 首先,我们需要理解XML的基本结构。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它使用标签来描述数据。DOM4J通过...

    DOM4j操作xml文件

    DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件DOM4j操作xml文件

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    使用dom4j读取xml四种方法

    ### 使用dom4j读取XML的四种方法 在Java开发中,处理XML文件是一种常见的需求。Dom4j作为一款简洁高效的Java库,被广泛应用于解析、操作XML文档。本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例...

    dom4j读取XML,解析XML简单示例

    首先,`XMLTest.java`是一个包含DOM4J操作XML的代码实例。通常,这样的程序会包含以下步骤: 1. 引入DOM4J库:在Java项目中,你需要导入DOM4J的相关类,如`org.dom4j.Document`、`org.dom4j.DocumentHelper`等。这...

    DOM4J读取XML

    本文将详细介绍如何使用DOM4J来读取XML文件中的信息。 ### DOM4J读取XML详解 #### 初始化资源路径 代码片段中的`URL url = this.getClass().getClassLoader().getResource("/")`这一行是获取类加载器的根目录路径...

    java中用dom4j读取xml

    本文将深入探讨如何使用DOM4J库来读取XML文件。 首先,让我们理解DOM4J的基本概念。DOM4J是基于DOM模型的,DOM(Document Object Model)是一种标准的API,用于解析XML文档并将其表示为一棵由节点组成的树形结构。...

    dom4j解析xml

    #### 四、XPath表达式在DOM4J中的应用 DOM4J支持XPath表达式来查询XML文档中的节点,XPath表达式是查询XML文档的一种强大工具,能够精确地定位到文档中的任意节点。 - **基本的XPath表达式**: - `/AAA/BBB/CCC`...

    使用dom4j操作xml

    ### 使用dom4j操作XML详解 #### 一、DOM4j简介与配置 **DOM4j** 是一款专为Java平台设计的开源XML解析处理工具。它的设计充分考虑了性能和易用性,同时提供了对DOM、SAX及JAXP等标准的支持,因此非常适合进行复杂...

    dom4j解析xml详解

    - **配置文件解析**: 许多应用使用XML作为配置文件的格式,DOM4J可以方便地读取和更新这些配置信息。 - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成...

    Dom4J生成XML的完整方法希望大家能用到

    Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至...

    Java用DOM4J读取XML

    ### Java使用DOM4J读取XML知识点解析 #### 一、概述 在Java开发中,处理XML文件是一项常见的任务。DOM4J是一个简单且功能强大的Java库,用于处理XML文档。它提供了类似于DOM的API,但更为轻量级且易于使用。本篇将...

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...

    使用Maven管理项目,实现DOM4j操作XML文件

    DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...

    dom4j解析xml文件(增删改查)

    在提供的视频资源"17-dom4j解析xml文档(增删改查).avi"中,可能详细展示了这些操作的步骤和示例,观看该视频将进一步加深你对DOM4J操作XML的理解。记得实践是检验理论的最好方式,动手操作会让你更好地掌握这些知识...

    dom4j读取xml

    **DOM4J解析XML的基本概念** DOM4J是Java中一个功能强大且...以上就是关于DOM4J读取XML的基本知识点和相关操作。在实际开发中,DOM4J不仅能够读取XML,还能帮助我们构建、修改XML文档,是Java处理XML的重要工具之一。

    dom4j操作XMl例子

    在本示例中,"dom4jExample.java"是一个Java程序,它展示了如何利用DOM4J库来操作XML文件。 首先,我们需要了解DOM4J的基本概念。DOM4J采用Document Object Model (DOM)接口,但它的实现比标准DOM更快,占用内存更...

    dom4j操作xml的增删改查

    DOM4J是一个强大的Java库,专门用于处理XML文档。...无论是在读取、创建、修改还是查询XML文档,DOM4J都能提供强大支持。通过实践这些基本操作,开发者可以轻松地在自己的项目中实现XML的增删改查功能。

Global site tag (gtag.js) - Google Analytics