`

dom4j对xml的创建与解析

阅读更多
package com.xu.do4j;

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

import org.dom4j.Attribute;
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;
import org.junit.Test;

public class dom4j_01 {
	
	
	/**
	* 建立一个XML文档,文档名由输入属性决定
	* @param filename 需建立的文件名
	* @return 返回操作结果, 0表失败, 1表成功
	*/
	public boolean createXMLFile(String filename){
		/** 返回操作结果, false表失败, true表成功 */
		boolean returnValue = false;
		/** 建立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");
		/** 再添加一个book节点信息 */
		bookElement =  booksElement.addElement("book");
		bookElement.addAttribute("show", "no");
		titleElement = bookElement.addElement("title");
		titleElement.setText("Lucene in Action");
		
		Element ownerElement = booksElement.addElement("owner");
		ownerElement.setText("O'Reilly");
		
		try{
			File file = new File(filename);
			if(null != file){
				returnValue = writer(file,document);
			}
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return returnValue;
	}
	
	/**
	 * 
	 * @param file
	 * @param document
	 * @return
	 * @throws Exception
	 */
	public boolean writer(File file , Document document) throws Exception{
		boolean flag = false;
		OutputFormat format = OutputFormat.createPrettyPrint();
		XMLWriter xmlWriter = new XMLWriter(new FileWriter(file), format);
		xmlWriter.write(document);
		xmlWriter.close();
		flag = true;
		return flag;
	}
	
	/**
	 * 
	 * @param url
	 * @return
	 * @throws DocumentException
	 */
	 public Document parse(String filename) throws DocumentException {
	        SAXReader reader = new SAXReader();
	        Document document = reader.read(filename);
	        return document;
	  }
	 
	 public void reader(Document document) throws DocumentException {
	        Element root = document.getRootElement();
	        Iterator it = root.elementIterator();
			while (it.hasNext()) {
				Element element = (Element) it.next();
				//未知属性名称情况下
				Iterator attrIt = element.attributeIterator();
				System.out.print("element:"+element.getName());
				while (attrIt.hasNext()) {
					Attribute a  = (Attribute) attrIt.next();
					System.out.print("-->attribute:"+a.getValue());
				}
				Iterator titleIt = element.elementIterator();
				if(!titleIt.hasNext()){
					System.out.print("-->text:"+element.getText());
				}
				while (titleIt.hasNext()){
					Element titleElement = (Element) titleIt.next();
					System.out.print("-->titleElement:"+titleElement.getName());
					if(null != element.getText() && !"".equals(element.getText())){
						System.out.println("-->text:"+titleElement.getText());
					}
				}
				//已知属性名称情况下
//				System.out.println("show: " + element.attributeValue("show"));
				
				//未知元素名情况下
//				Iterator eleIt = element.elementIterator();
//				while (eleIt.hasNext()) {
//					Element e = (Element) eleIt.next();
//					System.out.println(e.getName() + ": " + e.getText());
//				}
				//已知元素名情况下
//				System.out.println("title: " + element.elementText("title"));
			}
	     }
	 
	
	 public void readerReal(Document document) throws DocumentException {
		 Element root  = document.getRootElement();
		 String owner = root.elementText("owner");
		 if(null != owner && !"".equals(owner)){
			 System.out.println(owner);
		 }
		 Iterator it = root.elementIterator(); 
		 while(it.hasNext()){
			 Element element = (Element) it.next();
			 String title = element.elementText("title");
			 if(null != title && !"".equals(title)){
				 System.out.println(title);
			 }
		 }
	 }
	
	
	
	//@Test
	public void testCreateXMLFile(){
		String filename = "D:"+File.separator+"bookinfo.xml";
		if(createXMLFile(filename)){
			System.out.println("生成xml成功");
		}else{
			System.out.println("生成xml失败");
		}
	}
	
	@Test
	public void testReadXMLFile(){
		String filename = "D:"+File.separator+"bookinfo.xml";
		try {
			Document document = parse(filename);
			readerReal(document);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
}

 

分享到:
评论

相关推荐

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    dom4j解析xml文件的压缩包

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

    dom4j---xml解析jar包

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

    利用Dom4j生成XML和解析XML

    "Dom4j 生成 XML 和解析 XML" Dom4j 是一个 Java 库,用于处理 XML 文档。它提供了生成和解析 XML 文档的功能。在本文中,我们将学习如何使用 Dom4j 生成 XML 文档和解析 XML 文档。 生成 XML 文档 使用 Dom4j ...

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

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

    java dom4j解析xml

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

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

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

    dom4j解析XML所需jar包

    Jaxen可以与多种XML解析器(如DOM、DOM4J、JDOM等)协同工作,提供跨平台的XPath支持。 总结来说,DOM4J是一个全面且易用的XML处理工具,广泛应用于Java开发中。通过`dom4j-1.6.1.jar`和`jaxen-1.1.1.jar`这两个jar...

    dom4j解析xml

    ### DOM4J解析XML知识点详解 ...通过结合使用DOM4J的基本类和XPath表达式,可以轻松地实现对XML文档的查询和修改。无论是对于开发人员还是对于那些需要频繁处理XML数据的应用程序来说,DOM4J都是一个非常有价值的工具。

    DOM4J 解析XML

    DOM4J的主要特点包括对XPath的支持、事件驱动的解析、以及与流行的Java框架(如Spring和Hibernate)的良好集成。 在解析XML时,DOM4J有两种主要的解析方式:SAX和DOM。SAX是一种基于事件的解析器,适用于处理大型...

    dom4j解析xml实例

    DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML解析,并通过实例来帮助理解。 首先,让我们了解DOM4J的基本概念。DOM4J是...

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

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

    dom4j 解析xml实例

    在这个实例中,我们将深入探讨如何使用DOM4J解析XML文件,并通过`Dom4jTest1.java`这个示例程序来理解其工作原理。 首先,我们需要了解XML(Extensible Markup Language)是一种标记语言,常用于存储和传输数据。...

    dom4j解析和创建xml简单实例

    XPath是一种在XML文档中查找信息的语言,与DOM4J结合使用,可以高效地定位到XML文档中的特定节点。接下来,我们将深入探讨这两个关键概念以及如何通过它们实现XML的处理。 1. DOM4J解析XML 当我们处理XML文档时,...

    dom4j解析xml文件代码示例

    总结来说,DOM4J为Java开发者提供了一套全面的API来处理XML文档,包括解析、创建、修改和序列化XML。在`CacheInit.java`这个示例中,可能包含了利用DOM4J解析`emailTemplateConfig.xml`文件,提取或修改其中的配置...

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

    8. **与Spring框架集成**:在Spring框架中,DOM4J常用于配置文件的解析,例如Spring的bean定义XML文件。 DOM4J的版本迭代带来了许多改进和新特性,例如从1.6.1到2.1.1的过程中,可能包含了性能优化、API调整、错误...

    使用dom4j解析XML

    dom4j是一个强大的开源XML框架,它提供了处理XML文档的各种功能,包括解析、创建、修改等。相比W3C DOM API,dom4j的优势在于其内置的XPath支持,允许更方便地定位和操作XML文档中的节点。 **预先设置** 在使用dom4...

    xmldom4j解析

    本教程将深入探讨XML DOM4J解析的相关知识点。 一、DOM4J基本概念 DOM4J是一种灵活的Java API,其设计目标是简化XML处理,提供高效且易于使用的API。与标准的DOM(Document Object Model)相比,DOM4J更轻量级,...

Global site tag (gtag.js) - Google Analytics