`
jeelee
  • 浏览: 636979 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 操作XML

    博客分类:
  • java
阅读更多
/**
 * 注意:需要导入dom4j-1.6.1.jar,jaxen-1.1-beta-6.jar 两个包
 *如果没有导入jaxen-1.1-beta-6.jar 这个包,则会报错:  java.lang.noclassdeffounderror: org/jaxen/jaxenexception 

 */
package jeelee.main;


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;   

/**  
 * 功能:对xml的操作
 * @author jeelee  
 */  

public class XMLOperation
{
	Document document = null ;
	Element rootElement = null,element = null;
	SAXReader saxReader = null ;
	List list = null ;
	Iterator iterator = null ; 
	Attribute attribute = null;
	
	/**
	*功能:构造函数,加载XML,创建Document
	*@param fileName,String 类型,XML文件名
	*@return 无
	*/
	public XMLOperation(String fileName) 
	{
		try
		{
			saxReader = new SAXReader();
			File file = new File(fileName);
			if(!file.exists())
			{
				System.out.println(fileName + " 文件不存在!");
			}
			document = saxReader.read(fileName);
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
		}
	}
	
	/**
	* 功能:获得根节点
	* @param fileName,String类型, XML文件名
	* @return Element 类型,返回根节点
	*/
	public Element getRootElement(String fileName)
	{
		Element rootElement = null ;
		try
		{
			SAXReader saxReader = new SAXReader() ;
			Document document = saxReader.read(new File(fileName));
			rootElement = document.getRootElement();
		}
		catch(Exception ex)
		{
			ex.printStackTrace();  
		}

		return rootElement ;
	}
	
	/**
	 * 功能:获得指定节点的值
	 * @param elementStr,String 类型, 指定的节点
	 * @return 无
	 */
	public String getElementValue(String elementStr)
	{
		String valueStr = "" ;
		
		list = document.selectNodes(elementStr);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			element = (Element)iterator.next();
			valueStr = element.getText();
		}
		
		return valueStr ;
	}
	/**
	 * 功能:获得指定节点的指定属性的值
	 * @param attribueStr,String 类型, 指定的节点
	 * @return 无
	 */
	public String getAttributeValue(String attribueStr)
	{
		String valueStr = "" ;
		
		list = document.selectNodes(attribueStr);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			Attribute attribute = (Attribute)iterator.next();
			valueStr = attribute.getValue();
		}
		
		return valueStr ;
	}
	/**
	 * 功能:设置指定节点的值,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param elementStr, String 类型,指定的节点;
	 * @param valueStr String 类型
	 * @return 无
	 */
	public void setElementValue(String elementStr,String valueStr)
	{
		list = document.selectNodes(elementStr);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			element = (Element)iterator.next();
			element.setText(valueStr);
		}
	}
	/**
	 * 功能:设置指定节点的指定属性值,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param attributeStr,String 类型,指定节点的指定属性
	 * @param attributeValue,String 类型,属性值
	 * @return 无
	 */
	public void setAttributeValue(String attributeStr,String attributeValue)
	{
		list = document.selectNodes(attributeStr);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			Attribute attribute = (Attribute)iterator.next();
			attribute.setValue(attributeValue);
		}
	}
	/**
	 * 功能:在指定的节点下增加一个子节点,并为其指定值,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param parentElement,String 类型,指定的父节点
	 * @param childElementStr,String 类型,要增加的子节点
	 * @param elementValue,String 类型,新增子节点的值
	 * @return 无
	 */
	public void addElement(String parentElement,String childElementStr,String elementValue)
	{
		list = document.selectNodes(parentElement);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			element = (Element)iterator.next();
			Element childElement = element.addElement(childElementStr);
			childElement.setText(elementValue);
		}
	}
	/**
	 * 功能:在指定的节点中增加一个属性,并为其指定值,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param parentElement,String 类型,指定的父节点
	 * @param newAttribute,String 类型,要增加的属性
	 * @param attributeValue,String 类型,新增属性的值
	 * @return 无
	 */
	public void addAttribute(String element,String newAttribute,String attributeValue)
	{
		list = document.selectNodes(element);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			Element elem = (Element)iterator.next();
			Attribute attribute = (Attribute) elem.addAttribute(newAttribute, attributeValue);
		}
	}
	/**
	 * 功能:删除一个节点下的子节点,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param parentElement,String 类型,父节点
	 * @param childElement,String 类型,要删除的子节点
	 */
	public void deleteElement(String parentElement,String childElement)
	{
		list = document.selectNodes(parentElement);
		iterator = list.iterator();
		
		while(iterator.hasNext())
		{
			element = (Element)iterator.next();
			Iterator iter = element.elementIterator(childElement);
			while(iter.hasNext())
			{
				Element elem = (Element)iter.next();
				element.remove(elem);
			}
		}
	}
	
	/**
	 * 功能:删除一个节点的属性,调用此函数后需要调用writeXML(String fileName)函数以保存修改结果
	 * @param elementStr,String 类型,指定的节点;attributeStr,String 类型,指定要删除的属性
	 * @return 无
	 */
	public void deleteAttribute(String elementStr,String attributeStr)
	{
		list = document.selectNodes(elementStr);
		iterator = list.iterator();
		
		List lst = document.selectNodes(elementStr + "/@" + attributeStr);
		Iterator iter = null ;
		while(iterator.hasNext())
		{
			element = (Element)iterator.next();
			System.out.println("节点:"+element.getName());
			iter = lst.iterator();
			while(iter.hasNext())
			{
				attribute = (Attribute)iter.next();
				System.out.println("属性:"+attribute.getName());
				element.remove(attribute);
			}
		}
	}
	
	/**
	 * 功能:写入XML文件
	 * @param fileName,String 类型,要写入的XML文件
	 * @return returnValue,int 类型,1:表示写入成功,0:表示写入失败
	 */
	public int writeXML(String fileName)
	{
		int returnValue = 0 ;
		try
		{
			XMLWriter writer = new XMLWriter(new FileWriter(new File(fileName)));
			writer.write(document);
			writer.close();
			returnValue = 1 ;
		}
		catch(Exception ex)
		{
			ex.printStackTrace();
			returnValue = 0 ;
		}
		
		return returnValue ;
	}
	
	 /**  
     * 功能:格式化XML文档,并解决中文问题  
     * @param filename ,String 类型,要格式化的XML文件名 
     * @return  int
     */  
    public int formatXMLFile(String filename)
	{ 
		int returnValue = 0;

		try
		{
			SAXReader saxReader = new SAXReader();       
			Document document = saxReader.read(new File(filename));   
			XMLWriter output = null;   
			/**格式化输出,类型IE浏览一样*/  
			OutputFormat format = OutputFormat.createPrettyPrint();   
			/** 指定XML字符集编码 */  
			format.setEncoding("UTF-8");   
			output = new XMLWriter(new FileWriter(new File(filename)),format);   
			output.write(document);   
			output.close();           
			/**执行成功,需返回1 */  
			returnValue = 1;          
		}
		catch(Exception ex)
		{
			ex.printStackTrace();  
		}
		return returnValue ;
	}

	/**
	* 作用:遍历 xml
	* @param element,Element 类型,指定遍历的节点
	* @return 无
	*/
	public void visitXML(Element element)
	{
		Iterator iter = element.elementIterator();
		while (iter.hasNext())
		{
			element = (Element)iter.next();
			Iterator iter2 = element.elementIterator();
			if (!iter2.hasNext())
			{
				System.out.println("节点:"+element.getName()+"节点值:"+element.getText());
			}
			
			visitXML(element);
		}
	}

}


XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<calendar> 
	<config> 
		<tiprate>12</tiprate>
		<tip>Y</tip>
		<autorun>N</autorun>
		<clock>3.swf</clock>
		<alpha>100</alpha>
		<winlocal>1</winlocal>
		<wintop>Y</wintop>
	</config> 
</calendar>
分享到:
评论

相关推荐

    java读取XMl数据

    本文将深入探讨如何使用Java来读取XML数据。 首先,我们需要了解XML的基本结构。XML文档由元素(Element)、属性(Attribute)、文本内容(Text Content)等组成。每个XML文档都有一个根元素,其他元素则嵌套在根...

    java读取xml文件

    Java 读取 XML 文件是 Java 开发中常见的一项任务,XML(eXtensible Markup Language)作为一种可扩展标记语言,广泛用于数据交换、配置存储等领域。本教程将深入讲解如何在 Java 中处理 XML 文件,同时涉及 XML 的 ...

    用java读取xml文件的四种方法

    要读取XML文件,Java提供了多种方法。以下是四种常用的方法,每种都有其适用场景和特点: 1. **DOM解析器(Document Object Model)** DOM解析器将整个XML文件加载到内存中,创建一个树形结构,允许我们通过节点...

    使用Java读取XML配置文件

    使用 Java 读取 XML 配置文件 Java 语言和 XML 技术可以说是黄金组合,网上已经有很多文章介绍 XML 在电子商务中的数据交换的作用。但是在平时系统开发中,我们不一定都用到数据交换,是否无法使用 XML?当然不是...

    java 读取xml文件生成树形图

    在Java编程中,读取XML文件并将其转换为树形结构是一种常见的操作,尤其是在处理配置文件、数据交换或解析XML文档时。以下是一篇详细解释如何实现这一过程的文章。 首先,我们需要了解XML(eXtensible Markup ...

    Java读写xml,word,xml文件(防乱码)

    #### 三、Java读取XML文件 对于XML文件的读取,我们可以采用Java标准库中的`BufferedReader`配合`InputStreamReader`的方式来进行处理。这样可以在读取文件的同时指定正确的字符编码,从而避免乱码问题。 ```java ...

    java读取XML文件内容的四种方法[归类].pdf

    Java 读取 XML 文件内容的四种方法 Java 语言提供了多种方法来读取 XML 文件内容,以下是四种常见的方法: 1. DOM(Document Object Model) DOM 是一种基于树的模型,它将 XML 文档表示为一个层次结构的节点或...

    java读取XML(JDOM)

    Java读取XML文件是开发过程中常见的任务,JDOM是一个用于处理XML文档的Java库,它提供了方便、高效的方式来创建和操作XML数据。本篇将详细讲解如何使用JDOM来读取XML文件,以及相关的源码解析。 首先,我们需要了解...

    java读取XML内容源代码

    在Java编程中,读取XML(eXtensible Markup Language)文件内容是一项常见的任务,尤其在处理配置数据、数据交换或者存储结构化信息时。XML因其可读性强、结构清晰的特点,被广泛应用于各种场景。本篇文章将详细介绍...

    java读取xml文件生成文件

    在给定的场景中,我们主要关注如何使用Java来读取XML文件并根据需求生成新的文件。以下是关于这个主题的详细说明。 首先,Java中的`javax.xml.parsers`和`org.w3c.dom`包提供了处理XML的基本工具。`javax.xml....

    Java读取xml文件的四种方法.doc

    Java 读取 XML 文件的四种方法 在 Java 中读取 XML 文件有多种方法,本文将介绍四种常见的方法,分别使用 DOM、DOM4J、JDOM 和 SAX 解析器。 第一种方法:使用 DOM DOM(Document Object Model)是一种树形结构,...

    java读取xml用到的jar包集合

    在“java读取XML用到的jar包集合”中,包含了9个关键的JAR文件,它们提供了处理XML所需的API和功能。以下是这些JAR文件可能包含的重要知识点: 1. **JAXB (Java Architecture for XML Binding)** JAXB是Java标准版...

    java写XML文件和读取XML文件

    在Java编程中,处理XML文件是常见的需求,包括创建XML文件、读取XML文件以及解析XML内容。下面将详细介绍Java如何进行XML文件的操作。 一、Java写XML文件 1. 使用DOM(Document Object Model)API: DOM是W3C推荐...

    java操作xml工具包

    Java操作XML工具包是开发过程中不可或缺的部分,尤其是在处理与数据交换、配置文件或者与服务器通信相关的任务时。这里提到的两个关键库——XStream和DOM4J,都是Java中广泛使用的XML处理工具。 XStream是一个Java...

    java 操作xml文件(包含xml文件和对应jar包)

    在实际应用中,我们可能需要读取XML文件中的数据,例如,使用DOM API的`DocumentBuilderFactory`和`DocumentBuilder`来创建`Document`对象,然后通过`getElementsByTagName`、`getElementsByTagnameNS`等方法查找...

    java解析xml字符串

    Java提供了多种库来解析和操作XML文档,其中JDOM(Java Document Object Model)是一个广泛使用的开源库,它提供了简单且强大的API来读取、创建和修改XML文档。 ### Java解析XML字符串 在给定的代码示例中,我们...

    Java读取xml文件中oracle数据库连接

    在Java编程中,读取XML文件并从中获取Oracle数据库连接是一项常见的任务,特别是在需要动态配置数据库连接信息的应用中。XML文件通常被用作配置文件,因为它具有良好的结构和可读性,适合存储像数据库连接这样的配置...

    SAX.java 操作xml文件

    SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件SAX.java 操作xml文件

    Xml.zip_JAVA读取xml_XML读取_java_saxreader

    本教程将重点介绍如何使用SAXReader在Java中读取XML文件。 SAXReader是JDOM库中的一个类,它实现了SAX解析器接口,适用于处理大型XML文档,因为它不会将整个XML文档加载到内存中,而是采用事件驱动的方式,逐个处理...

    java读取xml文件并存入数据库

    java从xml中读入数据并存入到sqlserver2005数据库中

Global site tag (gtag.js) - Google Analytics