`
bearjava
  • 浏览: 82266 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

XML解析之DOM4j

    博客分类:
  • Java
阅读更多
Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.
public class DOM4jParse {

	public DOM4jParse() {
	}

	public boolean createXMLFile(String filename) {
		boolean flag = false;
		/** 建立document对象 */
		Document document = DocumentHelper.createDocument();
		/** 建立XML文档的根books */
		Element booksElement = document.addElement("books");
		/** 加入一行注释 */
		booksElement.addComment("This is a test for dom4j, ivan, 2008.11.28");
		/** 加入第一个book节点 */
		Element bookElement = booksElement.addElement("book");
		/** 加入show参数内容 */
		bookElement.addAttribute("show", "yes");
		/** 加入title节点 */
		Element titleElement = bookElement.addElement("title");
		/** 为title设置内容 */
		titleElement.setText("EJB Tutorials");

		/** 类似的完成后两个book */
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "yes");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Ajax Studing");
		bookElement = booksElement.addElement("book");
		bookElement.addAttribute("show", "no");
		titleElement = bookElement.addElement("title");
		titleElement.setText("IBatis 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 */
			flag = true;
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return flag;
	}

	/**
	 * 修改XML文件中内容,并另存为一个新文件 重点掌握dom4j中如何添加节点,修改节点,删除节点
	 * 
	 * @param filename
	 *            修改对象文件
	 * @param newfilename
	 *            修改后另存为该文件
	 * @return 返回操作结果, 0表失败, 1表成功
	 */
	public boolean ModiXMLFile(String filename, String newfilename) {
		boolean flag = false;
		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", "Gregorian calendar");
			}
			/** 修改内容之三: 若title内容为EJB 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("EJB Tutorials")) {
						bookElement.remove(titleElement);
					}
				}
			}
			try {
				/** 将document中的内容写入文件中 */
				XMLWriter writer = new XMLWriter(new FileWriter(new File(
						newfilename)));
				writer.write(document);
				writer.close();
				/** 执行成功,需返回1 */
				flag = true;
			} catch (Exception ex) {
				ex.printStackTrace();
			}
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		return flag;
	}

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

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

<?xml version="1.0" encoding="GBK"?>

<books>
  <!--This is a test for dom4j, ivan, 2008.11.28-->
  <book show="yes">
    <title>EJB Tutorials</title>
  </book>
  <book show="yes">
    <title>Ajax Studing</title>
  </book>
  <book show="no">
    <title>IBatis in Action</title>
  </book>
  <owner>O'Reilly</owner>
</books>



分享到:
评论

相关推荐

    XML解析技术DOM4J解析

    ### XML解析技术DOM4J解析 #### DOM4J解析概览 DOM4J是一种高性能、功能强大且极其易于使用的Java XML API,它最初是作为JDOM的一个智能分支发展起来的,自2000年下半年开始持续开发。DOM4J不仅在功能上超越了基本...

    Dom4j解析XML文档.doc

    在本文中,我们将深入探讨如何使用DOM4J来解析和操作XML文档。 首先,要使用DOM4J,你需要下载其库文件。官方站点位于http://www.dom4j.org,你可以在这里找到最新的DOM4J包,例如dom4j-1.6.1.zip。解压缩后,你会...

    dom4j解析xml详解

    DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时的强大工具。DOM4J的最大亮点在于其简洁易用的API...

    DOM4J jar包 xml解析 所有的dom4j-1.6.1 dom4j-2.0.2 dom4j-2.1.1包 导入直接使用

    6. **StAX(Streaming API for XML)支持**:DOM4J也支持StAX解析器,这种解析方式结合了SAX的高效和DOM的易用性,可以在处理大型XML文件时节省内存。 7. **与JAXB集成**:DOM4J可以与Java Architecture for XML ...

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

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    xmldom4j解析

    四、DOM4J处理循环节点 在处理包含循环节点的XML时,可以使用迭代器或XPath查询来遍历这些节点。例如,遍历所有`&lt;item&gt;`元素: ```java Element root = document.getRootElement(); List&lt;Element&gt; items = root....

    java解析XML dom4j dom4j-1.6.1.jar

    Java解析XML时,dom4j是一个非常流行的库,它提供了灵活且强大的API来处理XML文档。dom4j-1.6.1.jar是这个库的一个版本,发布于2005年,它支持XML的读取、写入、操作以及查询功能。在本文中,我们将深入探讨dom4j的...

    dom,dom4j,sax 解析xml文件实例

    本文将深入探讨DOM、DOM4J和SAX三种常用的XML解析方法,并结合具体的实例进行详细讲解。 首先,DOM(Document Object Model)是W3C组织推荐的一种XML解析标准。它将整个XML文档加载到内存中,构建一个树形结构,...

    dom4j解析xml文件的压缩包

    5. **事件驱动解析(SAX)**:除了传统的DOM解析外,DOM4J还支持SAX解析器,这种解析方式适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 6. **Namespace支持**:DOM4J提供了对XML命名空间的全面...

    DOM4J xml解析工具

    DOM4J作为XML解析工具,其核心功能包括: 1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,...

    使用 dom4j 解析 XML

    使用 dom4j 解析 XML dom4j 解析 XML dom4j解析xml

    Dom4j遍历解析XML

    Dom4j 遍历解析 XML Dom4j 是一个基于 Java 的 XML 解析库,提供了广泛的 XML 解析功能。Dom4j 遍历解析 XML 是指使用 Dom4j 库来解析和遍历 XML 文档,提取其中的元素、属性和值。 在 Dom4j 中,遍历 XML 文档...

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

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

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

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

    常见的 XML 解析器有 DOM、SAX、JDOM 和 DOM4J 等。每种解析器都有其特点和优缺,选择合适的解析器对应用程序的性能和开发效率有很大影响。 1. DOM 解析器 DOM(Document Object Model)是 W3C 官方标准,用于表示...

    XML解析-dom4j.jar-jdom.jar

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

    xml 三种解析方式dom,sax,dom4j

    在提供的压缩包中,包含了关于这三种解析方式的代码示例,你可以参考这些代码了解如何在Java环境中使用DOM、SAX和DOM4J进行XML解析。通过阅读和理解这些示例,你可以更好地掌握XML解析技术,并根据项目需求选择合适...

    开源XML解析包dom4j

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

Global site tag (gtag.js) - Google Analytics