`
dzfld2
  • 浏览: 690 次
社区版块
存档分类
最新评论

Dom4j的基本用法,希望大家给点意见

 
阅读更多

接口:

package com.dom4j;

import java.util.List;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;

public interface Dom4jUtilInterface {

	//修改属性值。欲修改属性名可以删除旧属性,增加新属性
	void modifyAttribute(Attribute attribute, String value);

	//修改节点的名称的名称和节点值
	void modifyElement(Element element, String name, String value);

	//删除指定名称的属性
	void deleteNameAttribute(Element element, String name);

	//删除某个节点
	void deleteSeed(Element root, Element del);

	@SuppressWarnings("rawtypes")
	List gResultWithXpath(String xpath, String filename);


	void gAttributesOfAElement(Element element);

	//访问List类型的所有属性
	void iteraterListAttribute(List<Attribute> list);

	//获取某节点下的所有属性

	List<Attribute> gNameAttributes(Element element);

	Attribute gAttribute(int index, Element element);

	Attribute gAttribute(String name, Element element);

	//迭代某个元素的所有子元素

	void gSeedOfAElement(Element element);

	//访问指定名称的第一个节点
	Element gFirstSeed(String name, Element root);

	//访问指定节点的全部内容

	List<Element> gNamedSeed(String name, Element root);

	//访问List类型的子节点内容
	void iteraterList(List<Element> list);

	//获取根节点下的所有子节点

	List<Element> gRootSeed(Element root);

	//获取根节点
	Element gRoot(String filename);

	//使用DOMReader解析
	Document DOMReaderReadXML(String filename);

	//使用SAXReader读取XML文档
	Document SAXReadXML(String filename);

	/*
	 * 创建XML文档的内容
	 */
	int createXML(String filename);

	/*
	 * 生成XML文件
	 */
	int makeXMLDocument(Document document, String filename);

}

 实现:

package com.dom4j.bean;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.util.Iterator;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.DOMReader;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import org.xml.sax.SAXException;

import com.dom4j.Dom4jUtilInterface;

public class Dom4jUtil implements Dom4jUtilInterface {
	
	
	//修改属性值。欲修改属性名可以删除旧属性,增加新属性
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#modifyAttribute(org.dom4j.Attribute, java.lang.String)
	 */
	public void modifyAttribute(Attribute  attribute,String value){
		attribute.setText(value);
	}
	
	//修改节点的名称的名称和节点值
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#modifyElement(org.dom4j.Element, java.lang.String, java.lang.String)
	 */
	public void modifyElement(Element element,String name,String value){
		element.setName(name);
		element.setText(value);
	}
	
	//删除指定名称的属性
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#deleteNameAttribute(org.dom4j.Element, java.lang.String)
	 */
	public void deleteNameAttribute(Element element,String name){
		element.remove(element.attribute(name));
	}
	
	//删除某个节点
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#deleteSeed(org.dom4j.Element, org.dom4j.Element)
	 */
	public void deleteSeed(Element root,Element del){
		root.remove(del);
	}
	
	//使用Xpath获取节点和属性

	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gResultWithXpath(java.lang.String, java.lang.String)
	 */
	@SuppressWarnings("rawtypes")
	public List gResultWithXpath(String xpath,String filename){
		Document document=SAXReadXML(filename);
		return document.selectNodes(xpath);
	}
	
	
	//迭代某个节点下的所有属性

	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gAttributesOfAElement(org.dom4j.Element)
	 */
	@SuppressWarnings("unchecked")
	public void gAttributesOfAElement(Element element){
		for (Iterator<Attribute> it=element.attributeIterator();it.hasNext();) {
			Attribute a=(Attribute)it.next();
			System.out.println(a.getStringValue());
		}
	}
	
	//访问List类型的所有属性
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#iteraterListAttribute(java.util.List)
	 */
	public void iteraterListAttribute(List<Attribute> list){
		
		for (Iterator<Attribute> it=list.iterator();it.hasNext();) {
			
			Attribute attr=it.next();
			System.out.println(attr.getStringValue());
		}
		
	}
	
	//获取某节点下的所有属性
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gNameAttributes(org.dom4j.Element)
	 */
	@SuppressWarnings("unchecked")
	public List<Attribute> gNameAttributes(Element element){
		return element.attributes();
	}
	
	//按照属性顺序,获取属性

	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gAttribute(int, org.dom4j.Element)
	 */
	public Attribute gAttribute(int index,Element element){
		return element.attribute(index);
	}
	
	//获取指定名称的元素的属性

	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gAttribute(java.lang.String, org.dom4j.Element)
	 */
	public Attribute gAttribute(String name,Element element){
		return element.attribute(name);
	}
	
	//迭代某个元素的所有子元素
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gSeedOfAElement(org.dom4j.Element)
	 */
	@SuppressWarnings("unchecked")
	public void gSeedOfAElement(Element element){
		for (Iterator<Element> it=element.elementIterator();it.hasNext();) {
			Element e=(Element)it.next();
			System.out.println(e.getStringValue());
		}
	}
	
	//访问指定名称的第一个节点
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gFirstSeed(java.lang.String, org.dom4j.Element)
	 */
	public Element gFirstSeed(String name,Element root){
		return root.element(name);
	}
	
	//访问指定节点的全部内容
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gNamedSeed(java.lang.String, org.dom4j.Element)
	 */
	@SuppressWarnings("unchecked")
	public List<Element> gNamedSeed(String name,Element root){
		return root.elements(name);
		
	}
	
	
	//访问List类型的子节点内容
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#iteraterList(java.util.List)
	 */
	public void iteraterList(List<Element> list){
		
		for (Iterator<Element> it=list.iterator();it.hasNext();) {
			
			Element e=(Element)it.next();
			System.out.println(e.getStringValue());
		}
		
	}
	//获取根节点下的所有子节点
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gRootSeed(org.dom4j.Element)
	 */
	@SuppressWarnings("unchecked")
	public List<Element> gRootSeed(Element root){
		return root.elements();
	}
	
	//获取根节点
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#gRoot(java.lang.String)
	 */
	public Element gRoot(String filename){
		
		Document document=SAXReadXML(filename);
		return document.getRootElement();
	}
	
	
	//使用DOMReader解析
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#DOMReaderReadXML(java.lang.String)
	 */
	public Document DOMReaderReadXML(String filename){
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
		DocumentBuilder db=null;
		Document document=null;
		try {
			db=dbf.newDocumentBuilder();
			File file=new File(filename);
			org.w3c.dom.Document wdocument=db.parse(file);
			DOMReader  reader=new DOMReader();
			document=reader.read(wdocument);
			
		} catch (ParserConfigurationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}catch (IOException e) {
			// TODO: handle exception
			e.printStackTrace();
		}catch (SAXException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return  document;
		
	}
	
	//使用SAXReader读取XML文档
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#SAXReadXML(java.lang.String)
	 */
	public Document SAXReadXML(String filename){
		
		SAXReader reader=new SAXReader();
		Document document=null;
		try {
			document =reader.read(filename);
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return document;
	}
	
	
	 
	/*
	 * 创建XML文档的内容
	 */
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#createXML(java.lang.String)
	 */
	public int createXML(String filename){
		//定义返回结果,1表示成功,0表示失败
		int returnvalue=0;
		//创建文档
		Document document=DocumentHelper.createDocument();
		//文档增加节点,即根节点,一个文档只能有一个根节点,多加出错。
		Element root=document.addElement("books");
		//添加注释
		root.addComment("this is a test for dom4j to createXML 2012-11-7");
		
		//第一种添加节点的方法
		//根节点下添加节点
		Element first=root.addElement("book");
		//节点添加属性
		first.addAttribute("name", "JAVA");
		first.addAttribute("id", "1234567890");
		//节点下添加节点
		Element info=first.addElement("Content");
		//节点设置数据
		info.setText("Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言");
		
		
		//第二种添加节点的方法
		//创建节点
		Element second=DocumentHelper.createElement("book");
		//将节点加入到根节点下
		root.add(second);
		//创建节点属性,第一个指定拥有者,也可以为空
		Attribute name=DocumentHelper.createAttribute(second, "name", "C++");
		//将属性添加到节点上
		second.add(name);
		//创建子节点,并加入到节点中
		Element info2=DocumentHelper.createElement("Content");
		info2.setText("C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言");
		second.add(info2);
		//生成XML文档
		returnvalue=makeXMLDocument(document, filename);
		return returnvalue;
		
	}
	
	/*
	 * 生成XML文件
	 */
	/* (non-Javadoc)
	 * @see com.dom4j.bean.Dom4jUtilInterface#makeXMLDocument(org.dom4j.Document, java.lang.String)
	 */
	public int makeXMLDocument(Document document,String filename){
		
		//定义返回结果,1表示成功,0表示失败
		int returnValue=0;
		try {
			//  创建格式化类 
			OutputFormat format=OutputFormat.createPrettyPrint();
			//  设置编码格式,默认UTF -8
			format.setEncoding("UTF-8");
			//  创建输出流,此处要使用Writer,需要指定输入编码格式,使用OutputStream则不用
			FileOutputStream fos=new FileOutputStream(filename);
			//  创建xml 输出流 
			XMLWriter writer=new XMLWriter(fos, format);
			//  生成xml 文件 
			writer.write(document);
			writer.close();
			// 执行成功,需返回1 
	        returnValue = 1;
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}catch (IOException e) {
			e.printStackTrace();
		}
		return returnValue;
	}
}

 

 

分享到:
评论

相关推荐

    Dom4j的用法

    首先,Dom4j的应用非常简单,只需要对XML-DOM模型有基本的了解就能上手使用。 Dom4j的接口大部分定义在org.dom4j包中,这包括对XML文档节点进行操作的接口。例如,org.dom4j.Document接口代表了整个XML文档对象,...

    dom4j详细使用用法

    #### 三、DOM4j基本使用方法 1. **读取并解析XML文档** 要读取并解析XML文档,可以使用`org.dom4j.io`包中的`SAXReader`类。`SAXReader`是一个轻量级的解析器,适用于大型文档,因为它不会一次性将整个文档加载到...

    dom4j基本例子

    总的来说,这个"dom4j基本例子"涵盖了DOM4J的基本操作,包括XML的解析、元素的增删改查以及使用XPath进行查询。通过学习和理解这个例子,你可以更好地掌握DOM4J库,并将其应用到自己的XML处理任务中。如果你深入研究...

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

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

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

    在项目中使用DOM4J时,只需将相应的jar包(如dom4j-1.6.1.jar、dom4j-2.0.2.jar或dom4j-2.1.1.jar)导入到类路径中,即可开始利用其功能处理XML文档。导入后,可以按照DOM4J提供的API进行编程,快速实现XML的读写...

    dom4j_dom4j1.6.1安装包_

    DOM4J的使用方法非常直观。例如,你可以使用以下代码创建一个新的XML文档: ```java DocumentFactory factory = DocumentFactory.getInstance(); Document document = factory.createDocument(); Element root...

    dom4j dom4j dom4j dom4j

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活且高效的API,使得XML的解析、创建、修改和查询变得简单易行。在Java世界中,DOM4J是与DOM、SAX和JDOM等其他XML处理库并驾齐驱的一个选择,尤其在处理...

    DOM4J帮助文档及使用教程

    通过阅读和实践DOM4J的帮助文档和使用教程,开发者可以全面掌握DOM4J的各种特性和用法,从而更高效地处理XML数据。这个压缩包提供的资料全面且详细,对于想要深入理解DOM4J的Java开发人员来说,是一份非常宝贵的资源...

    dom4j_1.6.1.jar dom4j_2.1.0.jar

    标题提及的"dom4j_1.6.1.jar"和"dom4j_2.1.0.jar"是两个不同版本的DOM4J库的Java档案文件,DOM4J是一个非常流行的Java XML API,用于处理XML文档。这两个版本的差异在于功能、性能优化和可能存在的bug修复。描述中...

    dom4j-1.6.1 与 dom4j-2.0.0-ALPHA

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了灵活、高效的API,使得XML的解析、创建、修改和查询变得简单。...了解并掌握DOM4J的使用,对于任何涉及XML的Java开发者来说都是非常有价值的技能。

    dom4j_例子,包括所有常用用法

    本文将通过一个具体的示例代码来深入探讨DOM4j的使用方法,涵盖创建、修改XML文档的常用操作。 #### 创建XML文档 在DOM4j中,创建XML文档非常直观。首先,需要导入DOM4j相关的包: ```java import org.dom4j....

    dom4j-2.1.3.zip

    "dom4j-2.1.3-javadoc.jar"文件则包含了DOM4J库的API文档,是开发者学习和使用DOM4J的重要参考资料。通过这个文件,我们可以查找类、接口、方法的详细说明,理解它们的功能和使用方式,这对于开发过程中快速定位问题...

    dom4j dom4j1.6 dom4j最新版

    其中,`dom4j-1.6.1.jar`是运行时库,包含了DOM4J的所有类和方法;`dom4j-1.6.1-sources.jar`包含了源代码,方便查看和学习;`dom4j-1.6.1.tar.gz`和`dom4j-1.6.1.zip`则是不同的压缩格式,提供了库文件的打包形式。...

    dom4j的Java工程

    在"dom4jdemo"这个子文件夹中,很可能是包含了一个或多个Java源代码文件,演示了如何使用DOM4J进行XML操作的实例。这些代码通常会包含导入DOM4J库的语句,如`import org.dom4j.Document;`和`import org.dom4j....

    dom4j 2.1.1

    在解压后的文件“dom4j”中,可能包含了DOM4J库的源码、API文档、示例代码等资源,这对于深入理解和使用DOM4J非常有帮助。通过阅读源码,可以了解其实现原理;查看API文档,可以快速找到所需功能的方法和接口;运行...

    dom4j-2.0.3.zip

    DOM4J中的Attribute类提供了创建、修改和删除属性的方法。 3. **Document**: Document类表示整个XML文档,是整个XML结构的根节点。它包含了XML文档的声明、元素、注释等所有信息。 4. **XPath**: DOM4J支持XPath...

    dom4j中XPath用法

    **DOM4J中XPath用法详解** XPath,全称为XML Path Language,是一种在XML文档中查找信息的语言。它被设计用来方便地选取XML文档中的节点,包括元素、属性、文本等。DOM4J是一个非常流行的Java XML API,它提供了一...

    dom4j需要的包

    7. **文档处理API**:DOM4J的API设计得非常直观,例如Element接口提供了添加子元素、删除元素、查找元素、获取属性值等方法,使得XML操作变得简单易用。 综上所述,DOM4J是一个强大且易用的XML处理工具,配合Jaxen...

    所有版本的dom4j工具包

    标题提到的"所有版本的dom4j工具包"表明这是一个包含多版本DOM4J库的集合,可能包括了从早期到较新的一些版本,如dom4j-1.4.jar、dom4j-1.6.1.jar和dom4j-1.5.2.jar。这些不同版本的库可能分别对应于不同的功能特性...

    dom4j-2.1.1-API文档-中英对照版.zip

    赠送jar包:dom4j-2.1.1.jar; 赠送原API文档:dom4j-2.1.1-javadoc.jar; 赠送源代码:dom4j-2.1.1-sources.jar; 赠送Maven依赖信息文件:dom4j-2.1.1.pom; 包含翻译后的API文档:dom4j-2.1.1-javadoc-API文档-...

Global site tag (gtag.js) - Google Analytics