`
jeelee
  • 浏览: 631069 次
  • 性别: 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文件的四种方法

    使用Java读取XML配置文件

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

    java读取xml文件

    文档中有代码案例,详细讲解了使用java读取xml,并附带有关于xml的dtd讲解,里面包含详细的文档和代码案例。和读取xml所需的jar。

    java 读取xml文件生成树形图

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

    Xml.zip_JAVA读取xml_XML读取_java_saxreader

    简单利用java读取xml中的标签,也是写xml

    java读取XMl数据

    NULL 博文链接:https://itjiehun.iteye.com/blog/670197

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

    Java 读取 XML 文件内容的四种方法 Java 语言提供了多种方法来读取 XML 文件内容,以下是四种常见的方法: 1. DOM(Document Object Model) DOM 是一种基于树的模型,它将 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文件中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文件

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

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

    简单java读取xml示例

    下面是一个简单的Java读取XML的StAX示例: ```java import javax.xml.stream.XMLInputFactory; import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamReader; import java.io....

    java_xml_api,java操作XML文档

    StAX是介于SAX和DOM之间的解析方式,它也采用事件驱动,但允许开发者通过迭代器按需读取XML流,从而平衡了内存使用和灵活性。 6. XML Schema和DTD XML Schema和Document Type Definition (DTD)是用于定义XML文档...

    java读取XML文件内容小程序

    在这个特定的“java读取XML文件内容小程序”中,使用的是XAM(可能是指JAXB,Java Architecture for XML Binding)解析器,它是一种基于Java注解的XML绑定技术,可以将XML数据自动映射到Java对象,反之亦然。...

Global site tag (gtag.js) - Google Analytics