`
xxtianxiaxing
  • 浏览: 705277 次
  • 性别: Icon_minigender_1
  • 来自: 陕西
社区版块
存档分类
最新评论

dom4j 操作xml 常见方法2

    博客分类:
  • xml
阅读更多
import java.io.File;
import java.io.FileWriter;
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;

/**
 * @author 作者 E-mail:
 * @version 创建时间:2009-7-29 上午09:11:51 类说明
 */
public class Dom4jXML {

	public Dom4jXML() {

	}

	/**
	 * 建立一个XML文档,文档名由输入属性决定
	 * 
	 * @param filename
	 *            需建立的文件名
	 * @return 返回操作结果, 0表失败, 1表成功
	 */
	public int createXMLFile(String filename) {
		/** 返回操作结果, 0表失败, 1表成功 */
		int returnValue = 0;
		/** 建立document对象 */
		Document document = DocumentHelper.createDocument();
		/** 建立XML文档的根books */
		Element booksElement = document.addElement("books");
		/** 加入一行注释 */
		booksElement.addComment("This is a test for dom4j, holen,2004.9.11");
		/** 加入第一个book节点 */
		Element bookElement = booksElement.addElement("book");
		/** 加入show属性内容 */
		bookElement.addAttribute("show", "yes");
		/** 加入title节点 */
		Element titleElement = bookElement.addElement("title");
		/** 为title设置内容 */
		titleElement.setText("Dom4j Tutorials");
		/** 类似的完成后两个book */
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "yes");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Lucene Studing");
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "no");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Lucene in Action");
		/** 加入owner节点 */
		Element ownerElement = booksElement.addElement("owner");
		ownerElement.setText("O'Reilly");
		try {
			/** 将document中的内容写入文件中 */
			XMLWriter writer = new XMLWriter(new FileWriter(new File(filename)));
			writer.write(document);
			writer.close();
			/** 执行成功,需返回1 */
			returnValue = 1;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return returnValue;
	}

	/**
	 * 修改XML文件中内容,并另存为一个新文件 重点掌握dom4j中如何添加节点,修改节点,删除节点
	 * 
	 * @param filename
	 *            修改对象文件
	 * @param newfilename
	 *            修改后另存为该文件
	 * @return 返回操作结果, 0表失败, 1表成功
	 */
	public int ModiXMLFile(String filename, String newfilename) {
		int returnValue = 0;
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(filename));
			/**
			 * 修改内容之一: 如果book节点中show属性的内容为yes,则修改成no
			 */
			/** 先用xpath查找对象 */
			List list = document.selectNodes("/books/book/@show");
			Iterator iter = list.iterator();
			while (iter.hasNext()) {
				Attribute attribute = (Attribute) iter.next();
				if (attribute.getValue().equals("yes")) {
					attribute.setValue("no");
				}
			}
			/**
			 * 修改内容之二: 把owner项内容改为Tshinghua
			 * 并在owner节点中加入date节点,date节点的内容为2004-09-11,还 为date节点添加一个属性type
			 */
			list = document.selectNodes("/books/owner");
			iter = list.iterator();
			if (iter.hasNext()) {
				Element ownerElement = (Element) iter.next();
				ownerElement.setText("Tshinghua");
				Element dateElement = ownerElement.addElement("date");
				dateElement.setText("2004-09-11");
				dateElement.addAttribute("type", "Gregoriancalendar");
			}
			/** 修改内容之三: 若title内容为Dom4j Tutorials,则删除该节点 */
			list = document.selectNodes("/books/book");
			iter = list.iterator();
			while (iter.hasNext()) {
				Element bookElement = (Element) iter.next();
				Iterator iterator = bookElement.elementIterator("title");
				while (iterator.hasNext()) {
					Element titleElement = (Element) iterator.next();
					if (titleElement.getText().equals("Dom4j Tutorials")) {
						bookElement.remove(titleElement);
					}
				}
			}
			try {
				/** 将document中的内容写入文件中 */
				XMLWriter writer = new XMLWriter(new FileWriter(new File(
						newfilename)));
				writer.write(document);
				writer.close();
				/** 执行成功,需返回1 */
				returnValue = 1;
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return returnValue;
	}

	/**
	 * 格式化XML文档,并解决中文问题
	 * 
	 * @param filename
	 * @return
	 */
	public int formatXMLFile(String filename) {
		int returnValue = 0;
		try {
			SAXReader saxReader = new SAXReader();
			Document document = saxReader.read(new File(filename));
			XMLWriter writer = null;
			/** 格式化输出,类型IE浏览一样 */
			OutputFormat format = OutputFormat.createPrettyPrint();
			/** 指定XML编码 */
			format.setEncoding("GBK");
			writer = new XMLWriter(new FileWriter(new File(filename)), format);
			writer.write(document);
			writer.close();
			/** 执行成功,需返回1 */
			returnValue = 1;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return returnValue;
	}

	public static void main(String[] args) {
		Dom4jXML temp = new Dom4jXML();
		System.out.println(temp.createXMLFile("d://holen.xml"));
		System.out.println(temp.ModiXMLFile("d://holen.xml", "d://holen2.xml"));
		System.out.println(temp.formatXMLFile("d://holen2.xml"));
	}
}





分享到:
评论

相关推荐

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

    ### Dom4J生成XML的完整方法详解 在Java开发领域,处理XML文档是常见的需求之一。Dom4J作为一款优秀的Java XML API,以其简洁、高效的特点,在生成、解析和操作XML文档方面表现突出。本文将深入探讨如何使用Dom4J库...

    dom4j解析xml详解

    - **Web服务**: 在SOAP等协议中,XML是常用的数据传输格式,DOM4J能够帮助构建和解析这些XML消息。 - **文档生成**: 当需要根据业务逻辑动态生成XML文档时,DOM4J的创建功能十分有用。 #### 四、结语 DOM4J作为一...

    使用dom4j读取xml四种方法

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

    dom4j解析xml

    - **DOM4J中常用的XPath方法**: - `selectNodes(String xpathExpression)`:根据XPath表达式选取一系列节点。 - `selectSingleNode(String xpathExpression)`:根据XPath表达式选取单个节点。 - `valueOf(String...

    java中用dom4j读取xml

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

    dom4j解析xml实例

    通过学习和实践这些基本操作,你可以熟练掌握DOM4J解析XML的技巧,为你的Java项目中处理XML数据提供强大的支持。在项目中遇到具体问题时,可以参考DOM4J的官方文档,或利用在线资源进行更深入的学习。

    java dom4j解析xml

    Java DOM4J解析XML是一种常见的处理XML文档的技术,它提供了灵活且高效的API,使得开发者能够方便地读取、写入、修改以及操作XML文件。DOM4J是Java中一个非常强大的XML处理库,它结合了DOM、SAX和JDOM的优点,同时也...

    Java用DOM4J读取XML

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

    使用dom4j将xml字符串转换成Bean对象

    首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和操作XML文档。其核心概念是Element(元素)、Attribute(属性)和Document(文档)。通过这些对象,我们可以方便地处理XML文档的...

    dom4j_XML.rar_DOM4J_dom4j xml java_java xml_读写xml

    在Java世界中,XML是一种常见的数据交换格式,DOM4J作为XML处理工具,尤其适用于那些需要频繁进行XML操作的项目。 在“dom4j读写xml!例子比较简单”的描述中,我们可以推断出这个压缩包包含了一些关于如何使用DOM4J...

    dom4j操作xml的增删改查

    1. **解析XML文档**:DOM4J提供了解析XML文档的方法,如`Document document = DocumentHelper.parseText(xmlString)`或`SAXReader reader = new SAXReader(); Document document = reader.read(new File("path_to_...

    dom4j_XML.rar_DOM4J_dom4j xml

    DOM4J是Java中解析XML的常用库之一,其名称中的“DOM”指的是Document Object Model,这是一个W3C标准,用于表示XML文档的树型结构。DOM4J不仅支持DOM,还提供了SAX(Simple API for XML)和StAX(Streaming API for...

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

    2. **XML解析方式**:dom4j提供了两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是流式解析,适用于处理大型XML文件;DOM则是将整个XML文档加载到内存,适合小型或中型文档...

    dom4j解析XML文档.ppt

    在解析XML文档后,DOM4J将XML转换为一个对象树,这个树结构与DOM类似但更易于操作。DOM4J的Element类代表XML元素,它提供了丰富的API,例如`elements()`方法,可以轻松获取元素的所有子元素,而不仅仅是子节点,这样...

    使用dom4j和jaxen解析xml

    在Java开发中,dom4j和jaxen是两个常用的库,用于解析和操作XML文档。 **dom4j** 是一个非常灵活且功能强大的Java XML API,它提供了全面的XML解决方案,包括XML的读取、写入、修改以及XPath查询等功能。dom4j的...

    DOM4J解析XML

    在Java领域,XML是数据交换和配置文件的常用格式,DOM4J则是一个重要的工具,帮助开发者高效地与XML交互。 XML(eXtensible Markup Language)是一种标记语言,它定义了如何存储和传输结构化数据。其特点是自描述性...

    DOM4J解析XML代码

    解析XML文件有多种方法,常见的有DOM(文档对象模型),DOM4J以及SAX(简单API文档解析)。DOM方法将整个XML文档加载进内存,形成一个树状结构,然后通过遍历这个结构进行操作,这种方式适合文档较小且需要频繁操作...

    DOM4J格式化XML

    DOM4J是一个非常流行的Java XML API,它提供了丰富的功能,包括读取、写入、修改以及操作XML文档。在XML处理中,格式化是一个重要的环节,它可以使得XML代码更加整洁、易读,便于理解和维护。 【描述】虽然描述部分...

    dom4j解析xml.txt

    本文详细介绍了如何使用DOM4J进行XML文档的创建、写入以及读取操作。通过对DOM4J库的学习和实践,可以高效地处理各种复杂的XML文档需求。无论是创建新的XML文件还是从现有的XML文件中提取数据,DOM4J都能提供强大的...

Global site tag (gtag.js) - Google Analytics