`
javaeeboy
  • 浏览: 12119 次
  • 性别: Icon_minigender_1
  • 来自: 汕头
社区版块
存档分类
最新评论

使用dom4j操作xml文件

阅读更多
第一种,使用dom4j生成一个xml文件
package dom4j;

import java.io.*;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;
import org.jdom.output.XMLOutputter;

/**
 * 使用dom4j生成xml文档
 * 如果已经存在了,那新生成的将完全替换它
 * @author Administrator
 */
public class NewXml {
	// 1,使用dom4j生成一个xml文档:
	private static int createXMLFile(String fileName) {
		/** 返回操作结果, 0表失败, 1表成功 */
		int intReturn = 0;
		/*
		 * 建立document对象,
		 * 一个xml文件可以看成一个文档,
		 * 所以必须先创建一个文档
		 */
		Document document = DocumentHelper.createDocument();
		/*
		 * 建立XML 文档的根books,
		 * 对于一个xml文件有唯一的一个根元素,
		 * 在dom4j中使用Element表示
		 */
		Element booksElement = document.addElement("books");
		/*
		 * 根元素有了,
		 * 我们在根元素下面添加一行注释 
		 * 这一句不用怎么管
		 */
		booksElement.addComment("This is dom4j test.");
		/*
		 * 加入根节点books中的第一个子节点book,
		 * 即根元素的第一个子节点或者是子元素.
		 * 在这里返回添加的子节点的原因是因为子节点还有一个属性需要添加
		 */
		Element bookElement = booksElement.addElement("book");
		/*
		 * 加入show属性内容,属性使用attribute来表示
		 * 疑问,可以添加多个属性吗?就是多次调用attribute()方法
		 * 疑问解开了,能够支持多个属性下面就是例子
		 */
		bookElement.addAttribute("show", "yes");
		bookElement.addAttribute("a", "a");
		/*
		 * 加入title 节点,为第一个子节点的子节点
		 */
		Element titleElement = bookElement.addElement("title");
		/*
		 * 等一下就是这种结果
		 * <title>threw</title>
		 * 要给节点赋值时使用setText()方法
		 */
		titleElement.setText("threw");

		/* 类似的完成后两个节点 */
		/* 类似的完成后两个book */
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "yes");
		bookElement.addAttribute("a", "b");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Lucene Studing");
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "no");
		bookElement.addAttribute("a", "c");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Lucene in Action");

		/* 加入owner节点 */
		Element ownerElement = booksElement.addElement("owner");
		ownerElement.setText("O'Reilly");

		/* 将创建的document内容写入到文件中 */

		try {
			/*
			 * 美化格式,
			 * 在xml文件中生成富有层次感的节点
			 */
			OutputFormat format = OutputFormat.createPrettyPrint();
			// 缩减格式
			// format = OutputFormat.createCompactFormat();
			
			/*
			 * 生成xml写入流对象writer
			 * FileWriter:写入字符流
			 * File:文件和目录路径名的抽象表示形式
			 * format:xml文件节点格式
			 * 
			 * XMLOutputter这个类应该像Jdom中的使用一样,还没有试过
			 */
			
			XMLWriter writer = new XMLWriter(
					new FileWriter(new File(fileName)), format);
			
			/*
			 * 写入操作
			 */
			writer.write(document);
			
			/*
			 * 关闭写入流
			 */
			writer.close();

			intReturn = 1;
		} catch (IOException e) {
			e.printStackTrace();
		}
		return intReturn;
	}
	
	public static void main(String[] age){
		NewXml.createXMLFile("C:/ming.xml");//指定路径名
	}

}


使用dom4j解析一个xml文件
package dom4j;
import java.io.File;
import java.util.Iterator;

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

/**
 * 读取XML文件的属性以及节点的值
 * @author Administrator
 *特别声明,获取子节点可以用element("节点名")
 */
public class Dom4jReader {

	/**
	 * @param args
	 * 读取XML文件
	 */
	public static void main(String[] args) {
		try{
			//创建阅读器
			SAXReader  saxReader = new SAXReader();
	        //创建document 对象
			Document  document = saxReader.read(new File("D:/ming.xml"));
			//取得根元素
			Element  books = document.getRootElement();
		
			/*
			 * 获取根节点下的第一个节点
			 * 并将它传给遍历器
			 */
			Iterator<Element> it = books.elementIterator("book");
			//开始遍历它
			while(it.hasNext()){
				//将获取到的节点传给Element对象 
				Element book = it.next();
				
				/*
				 * attribute("show")//获取属性的对象
				 * attribute("show").asXML()获取属性的文本
				 * book.attribute("show").getStringValue()可以获取到属性名为"show"这个键下的值
				 * 也可以使用 book.attributeValue("show");都是一样的
				 */
				String show = book.attribute("show").getStringValue();
				String show1 = book.attributeValue("show");
				System.out.println("获取的属性:"+show1);
				/*
				 * 使用Element的lementText("title")
				 * 可以获取在这个title标签下的文本
				 */
				String title = book.elementText("title");
				System.out.println("title为:"+title);
			}
		}catch(Exception e){
			e.printStackTrace();
		}

	}

}


使用dom4j来增加xml文件的节点

package dom4j;

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

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

/**
 * 使用Dom4j为xml文件增加数据,也可以理解为增加节点
 * 原理跟Reader差不多
 * @author Administrator
 */
public class Dom4jAdd {

	/**
	 * @param args
	 * @throws DocumentException 
	 */
	public static void main(String[] args) throws Exception {
		
		XMLWriter writer = null;// 声明写XML的对象

		SAXReader reader = new SAXReader();// 读的对象

		OutputFormat format = OutputFormat.createPrettyPrint();// 获取输出的格式

		format.setEncoding("GBK");// 设置XML文件的编码格式

		String filePath = "d:\\ming.xml";// 路径

		File file = new File(filePath);// 文件路径的抽象表现形式
		
		/*
		 * exists():测试此抽象路径名表示的文件或目录是否存在
		 */
		if(file.exists()){
        	Document document = reader.read(file);// 读取XML文件,获取dom对象
        	
        	Element booksElement = document.getRootElement();//获取根节点 
        	
        	/*
        	 * 为根节点添加一个名为book的子节点
        	 */
        	Element bookElement = booksElement.addElement("book");
        	//下面是添加两个属性
        	bookElement.addAttribute("show","yes");
        	bookElement.addAttribute("a", "d");
        	
        	Element titleElement = bookElement.addElement("title");
        	titleElement.setText("mingxi");
        	
        	 writer = new XMLWriter(new FileWriter(filePath), format);
             writer.write(document);
             writer.close();
        	
		}

	}

}



使用dom4jl来删除xml文件的节点
package dom4j;

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

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 使用Dom4j删除节点
 * @author Administrator
 */
public class Dom4jDel {

	public static void main(String[] args) throws Exception {
		XMLWriter writer = null;// 声明写XML的对象

		SAXReader reader = new SAXReader();// 读的对象

		OutputFormat format = OutputFormat.createPrettyPrint();// 获取输出的格式

		format.setEncoding("GBK");// 设置XML文件的编码格式

		String filePath = "d:\\ming.xml";// 路径

		File file = new File(filePath);// 文件路径的抽象表现形式

		// exists():测试此抽象路径名表示的文件或目录是否存在
		if (file.exists()) {
			Document document = reader.read(file);// 读取XML文件,获取dom对象
        	
        	Element booksElement = document.getRootElement();//获取根节点
        	
        	Iterator<Element> i =  booksElement.elementIterator("book");
        	
        	while(i.hasNext()){
        		Element book = i.next();
        		String show =  book.attributeValue("show");
        		
        		if(show.equals("yes")){//如果是在这个节点上属性为show的值为“yes”
        			/*
        			 * 就将这个节点删掉
        			 * booksElement :父节点的对象
        			 * book:子节点的对象
        			 */
        			booksElement.remove(book);
        		}
        	}
			writer = new XMLWriter(new FileWriter(filePath), format);
            writer.write(document);
            writer.close();
		}
	}

}



使用dom4j来更改节点的内容
package dom4j;
import java.io.File;
import java.io.FileWriter;
import java.util.Iterator;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * 使用Dom4j修改节点中的内容
 * @author Administrator
 */
public class Dom4jUpdate {
	
	public static void main(String[] args) throws Exception {
		
		XMLWriter writer = null;//声明写XML的对象
		
		SAXReader reader = new SAXReader();//读的对象
		
        OutputFormat format = OutputFormat.createPrettyPrint();//获取输出的格式
        
        format.setEncoding("GBK");// 设置XML文件的编码格式

        String filePath = "d:\\ming.xml";//路径
        
        File file = new File(filePath);//文件路径的抽象表现形式
        
        //exists():测试此抽象路径名表示的文件或目录是否存在
        if(file.exists()){
        	
        	Document document = reader.read(file);// 读取XML文件,获取dom对象
        	
        	Element booksElement = document.getRootElement();//获取根节点
        	/*
        	 * 获取根节点下的子节点名为book
        	 * 然后遍历它
        	 */
        	Iterator<Element> i =  booksElement.elementIterator("book");
        	/*
        	 * 开始遍历
        	 */
        	while(i.hasNext()){
        		
        		//获取节点book节点的对象
        		Element book = i.next();
        		
        		/*
        		 * 获取属性为show的值
        		 */
        		String show =  book.attributeValue("show");
        		
        		/*
        		 * 判断此次循环到的这个book节点中的show属性值是否为yes
        		 * 
        		 * 聊天系统的建议,可以来个time属性和name属性、toName属性,
        		 * 然后在接下来的节点中可以使用标签来显示聊天信息
        		 * 总之有待讨论
        		 */
        		if(show.equals("yes")){
        			
        			/*
        			 * 通过再次遍历获取title节点
        			 * 然后重新给它赋值
        			 */
//        			Iterator<Element> i1 = book.elementIterator("title");
//        			if(i1.hasNext()){
//        				Element title = i1.next();
//        				title.setText("aaaaa");
//        			}
        			/*
        			 * 比注释掉的代码更好的
        			 */
        			Element title1 = book.element("title");
        			title1.setText("aasdasdas");
        			
        			/*
        			 * 修改节点为title中的值
        			 * 下面中的selectSingleNode方法为什么不可以用
        			 */
        			//book.selectSingleNode("title").setText("aaaaaa");
        		
        			
        		}
        	}
        	/**
			 * 重新写回去
			 */
			writer = new XMLWriter(new FileWriter(filePath), format);
            writer.write(document);
            writer.close();
        }
		
	}
	

}



以上分别是dom4j的增删查改的操作,当然啦,我相信有更好的操作方式,也希望高手们能够在看完后留下你更好的操作方式!谢谢!或E-mail 我 javaeeboy@qq.com 谢谢
分享到:
评论

相关推荐

    dom4j读写xml文档实例

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

    详细介绍使用Dom4j读取xml文件的方法

    ### 使用Dom4j读取XML文件的方法详解 #### 一、引言 在Java开发过程中,经常需要处理各种格式的数据文件,其中XML(可扩展标记语言)作为一种标准的数据交换格式被广泛使用。为了高效地解析和操作XML文档,开发者...

    读写超大类xml文件,使用dom4j读写xml文件的工具类

    基于dom4j的读写xml文件的工具包。封装了dom4j操作xml文档的常和方法。 支持两种读写方法。1:针对小文件的读取整个文档,2:针对大文件的,逐行读取。读到几百M文件毫无压力。

    DOM4j操作xml文件

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

    使用dom4j读取xml四种方法

    本文将详细介绍使用dom4j读取XML文件的四种常见方法,并通过示例代码帮助读者更好地理解和掌握这些技术。 #### 方法一:使用`SAXReader`与`elementIterator` **方法原理**: 此方法首先利用`SAXReader`读取XML文档...

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

    2. **创建XML文件**:使用DOM4j创建一个新的XML文件,这通常涉及到`Document`、`Element`和`Writer`的使用。例如,你可以创建一个包含根元素和子元素的XML文件。 3. **动态创建XML节点**:在已有的XML文档中动态...

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

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

    dom4j解析xml文件的压缩包

    为了使用这个库,你需要将该jar包添加到项目的类路径中,然后就可以通过DOM4J提供的类和方法来解析和操作XML文件了。 总之,DOM4J是一个功能强大的XML处理库,无论是在小型项目还是大型系统中,都能发挥其优势,...

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

    在“dom4j解析xml文件(增删改查)”这个主题中,我们将深入探讨如何使用DOM4J来实现XML文档的四种基本操作:增加元素、删除元素、更新元素内容以及查询元素。 首先,让我们了解DOM4J的基本用法。在解析XML文件时,...

    java中用dom4j读取xml

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

    使用DOM4j解析XML文件

    在使用DOM4j解析XML文件时,首先需要导入DOM4j的相关包,如`SAXReader`用于读取XML文件,`Document`表示整个XML文档,`Element`表示XML文档中的元素,以及`Attribute`表示元素的属性。以下是一个使用DOM4j解析XML...

    dom4j解析xml详解

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

    DOM4J读取XML

    在深入探讨如何使用DOM4J库来解析XML文件之前,我们先简要了解DOM4J的基本概念及其在Java开发环境中的重要性。DOM4J是一个轻量级、高性能且易于使用的Java库,用于处理XML文档。它提供了类似于DOM、SAX和JDOM的API,...

    XSD使用dom4j校验XML

    本篇文章将深入探讨如何利用DOM4J库来实现XSD对XML文档的校验,以确保XML文件符合预先设定的数据结构规则。 首先,理解XSD的作用至关重要。XSD文件定义了XML文档的元素、属性、数据类型以及它们之间的关系。通过...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

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

    接下来,我们将创建一个`SAXReader`实例,它是DOM4J中的解析器,用于读取XML文件: ```java SAXReader reader = new SAXReader(); ``` 然后,使用`reader`读取XML文件并获取`Document`对象,`Document`代表整个XML...

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

    本文将深入探讨如何使用Dom4J库来创建XML文档,包括初始化文档、添加元素、设置属性、插入文本以及最终保存文档至文件系统。 #### 一、Dom4J简介 Dom4J(Document Object Model for Java)是一款开源的、轻量级的...

    DOM4J 读取xml字符串

    在这个教程中,我们将深入探讨如何使用 DOM4J 来读取 XML 字符串。 ### 1. DOM4J 简介 DOM4J 是一个基于 Java 的开源项目,它的全名是 Document Object Model for Java。与传统的 DOM API 相比,DOM4J 提供了更...

    dom4j解析xml

    以下是一个简单的DOM4J代码示例,展示如何使用DOM4J删除XML文档中的一个节点: ```java import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j....

Global site tag (gtag.js) - Google Analytics