`
YANFAN0916
  • 浏览: 30299 次
文章分类
社区版块
存档分类
最新评论

通用XML处理工具

 
阅读更多
package com.metarnet.Execution.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.apache.log4j.Logger;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
/**
 * XML文件通用处理工具
 * @author 程序员 闫帆
 */
public class XMLUtil {
	private Document doc=null;
	private File XMLFile;
	protected static Logger logger=Logger.getLogger(XMLUtil.class);
	public XMLUtil(File XMLFile){
		this.XMLFile=XMLFile;
		SAXReader saxReader = new SAXReader();
		try {
			doc=saxReader.read(XMLFile);
		} catch (DocumentException exception) {
			logger.error("不能读取指定的文件,请确认指定的文件为XML文件!>>>文件路径:"+XMLFile.getAbsolutePath());
			createXML();
		}
	}
	/**
	 * 根据文件路径获取实例(文件路径)
	 * @throws DocumentException 
	 */
	public static XMLUtil getXML(String filepath)
	{
		XMLUtil util=new XMLUtil(new File(filepath));
		return util;
	}
	/**
	 * 根据文件获取实例(File文件)
	 * @throws DocumentException 
	 */
	public static XMLUtil getXML(File file)
	{
		XMLUtil util=new XMLUtil(file);
		return util;
	}
	/**
	 * 获取到第一个匹配项并返回Node
	 */
	public Node SelectNode(String NodeName)
	{
		return doc.selectSingleNode(NodeName);
	}
	/**
	 * 获取到第一个匹配项并返回Element
	 */
	public Element SelectElement(String NodeName)
	{
		return (Element) doc.selectSingleNode(NodeName);
	}
	/**
	 * 获取第一个匹配节点的值
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<Test>1</Test>
	 * </MyInfo>
	 */
	public String SelectNodeValue(String NodeName)
	{
		return SelectNode(NodeName).getText();
	}
	/**
	 * 获取第一个匹配节点的值
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<Node>
	 * 			<Test>1</Test>
	 * 		</Node>
	 * </MyInfo>
	 */
	public String SelectNodeValue(String ElementName,String NodeName)
	{
		return SelectNode(ElementName).valueOf(NodeName);
	}
	/**
	 * 获取第一个匹配节点的值
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<text comment="t1">t2</text>
	 * </MyInfo>
	 */
	public String SelectNodeString(String ElementName,String NodeName)
	{
		return SelectElement(ElementName).attribute(NodeName).getStringValue();
	}
	/**
	 * 添加节点
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<text>t2</text>
	 * </MyInfo>
	 */
	public void addNode(String addNodeName,String addNodeString)
	{
		doc.getRootElement().addElement(addNodeName).addText(addNodeString);
		Save();
	}
	/**
	 * 添加节点
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<text>
	 * 			<text1>t2</text1>
	 * 		</text>
	 * </MyInfo>
	 */
	public void addNode(String ElementName,String addNodeName,String addNodeString)
	{
		SelectElement(ElementName).addElement(addNodeName).addText(addNodeString);
		Save();
	}
	/**
	 * 添加节点
	 * 示例:
	 * <?xml version="1.0" encoding="UTF-8"?>
	 * <MyInfo>
	 * 		<name ID="123"/>
	 * </MyInfo>
	 */
	public void addNodeAttribute(String ElementName,String addNodeName,String addNodeString)
	{
		SelectElement(ElementName).addAttribute(addNodeName, addNodeString);
		Save();
	}
	/**
	 * 删除节点(匹配到第一个节点)
	 */
	public void removeNode(String NodeName)
	{
		SelectNode(NodeName).getParent().remove(SelectNode(NodeName));
		Save();
	}
	/**
	 * 删除节点
	 * (删除父节点下的节点)
	 */
	public void removeNode(String parentNode,String NodeName)
	{
		SelectElement(parentNode).remove(SelectNode(NodeName));
		Save();
	}
	/**
	 * 修改节点值
	 */
	public void alterNode(String NodeName,String NewNodeString)
	{
		SelectNode(NodeName).setText(NewNodeString);
		Save();
	}
	public void createXML()
	{
		doc = DocumentHelper.createDocument();
		doc.addElement("Root");
		Save();
	}
	/**
	 * 保存文件
	 * @throws IOException
	 */
	public void Save()
	{
		OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("GB2312");
		XMLWriter write;
		try {
			write = new XMLWriter(new FileWriter(XMLFile),format);
			write.write(doc);
			write.close();
		} catch (IOException e) {
			logger.error("保存文件过程出现错误!",e);
		}
	}
}




以上代码可能新手朋友很难理解,粘贴上测试代码,仅供参考




package com.metarnet.Execution.test;
import org.apache.log4j.Logger;
import com.metarnet.Execution.util.XMLUtil;

public class TestXml {
	public static final Logger logger=Logger.getLogger(TestTelnet.class);
	public static void main(String[] args) {
		XMLUtil util = XMLUtil.getXML("F:\\Test.xml");
		util.createXML();
		util.addNode("name", "闫帆");
		util.addNode("Telephone", "18691090812");
		util.addNodeAttribute("//name", "ID", "123");
		System.out.println(util.SelectNodeValue("//name"));
		System.out.println(util.SelectNodeString("//name", "ID"));
		util.addNode("www", "Metar");
		util.addNode("text", "闫帆");
		util.addNode("//www","Telephone", "18691090812");
		util.alterNode("//text", "修改测试");
		System.out.println(util.SelectNodeValue("//www"));
		util.removeNode("//Telephone");
		util.removeNode("//text","//Telephone");
	}
}





-----------------------------------程序员 闫帆原创---------------------------------------

转载请注明原创人信息 程序员 闫帆yanfanvip



分享到:
评论

相关推荐

    老九工具资源库之通用处理工具包

    老九工具资源库系列一:(版本号 ...老九工具资源库共五套,包括通用工具、网络处理工具、编程控件、图形处理工具、证券处理工具等;陆续推出中,敬请关注。工具包的内容会不定期更新增强。 联系邮箱: hlsoft@21cn.com

    xml语言基础教程基础篇

    Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的...

    xml入门教程/xml入门教程

    4) XML没有定义任何标记,它提供了一种工具定义标记以及它们之间的结构关系; 5) XML是一种用于结构化文本交换的标记语言; 6) XML代表了内容的结构也代表了内容本身; 7) XML继承自SGML(标准通用标记语言)。SGML的...

    XML语言编程 初步到精通

    Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的...

    XML高级编程pdf

    12.10.5 BizTalk Jumpstart工具包简介 12.10.6 BizTalk服务器 12.11 小结 第13章 样式XML 13.1 解释的位置 13.2 客户端的XML转换 13.3 解释模型 13.3.1 视觉解释 13.3.2 语音解释 13.3.3 如何将样式表链...

    XML - 报表数据的新大陆.rar

    随着时代的发展,一些报表工具加上了处理XML文档的能力,但需要编程,编写并配置插件,如此报表程序结构复杂,接口众多,用户还需要根据各种规范动手编写程序,若XML文档格式有很多种,就需要编写很多种的插件,报表...

    XML 高级编程(高清版)

    12.10.5 BizTalk Jumpstart工具包简介 12.10.6 BizTalk服务器 12.11 小结 第13章 样式XML 13.1 解释的位置 13.2 客户端的XML转换 13.3 解释模型 13.3.1 视觉解释 13.3.2 语音解释 13.3.3 如何将样式表链...

    XML高级编程 (Extensible Markup Language)

    12.10.5 BizTalk Jumpstart工具包简介 12.10.6 BizTalk服务器 12.11 小结 第13章 样式XML 13.1 解释的位置 13.2 客户端的XML转换 13.3 解释模型 13.3.1 视觉解释 13.3.2 语音解释 13.3.3 如何将样式表链...

    XML实用大全----xml详细参考书

    比较全面的XML参考电子书!强列推荐。如下是目录: 第一部分 XML简介... 9 第1章 XML概览... 9 1.1 什么是XML. 10 1.1.1 XML是元标记语言... 10 1.1.2 XML描述的是结构和语义,而不是格式化... 10 1.2 为什么...

    XML高级编程

    12.10.5 BizTalk Jumpstart工具包简介 561 12.10.6 BizTalk服务器 562 12.11 小结 565 第13章 样式XML 567 13.1 解释的位置 567 13.2 客户端的XML转换 568 13.3 解释模型 568 13.3.1 视觉解释 569 13.3.2 语音解释 ...

    C#操作XML.pdf

    平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML 是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方 式建立,虽然XML 占用的空间比二进制数据要...

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    Parser是一种检查XML文档是否遵循DTD规范的工具软件。 XML的parser发展为两类:一种是"非确认类paeser",只检测文档是否遵守XML语法规则,是否用元素标识建立了文档树。另一种是"确认类paeser",它不但检测文档语法...

    XML学习入门手册API

    Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的...

    xml解决方案开发实务

    Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的...

    XMl实用大全(资料全易学习)

    (很全的XML的学习资料。) 第一部分 XML简介 9 第1章 XML概览 9 1.1 什么是XML 10 1.1.1 XML是元标记语言 10 1.1.2 XML描述的是结构和语义,而不是格式化 10 1.2 为什么开发人员对XML感到激动 13 1.2.1 设计与特定...

    XML解析包.zip krf

    XML,全称为可扩展标记语言(EXtensible Markup Language),是标准通用标记语言的子集。它是一种用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,并允许用户定义自己的标记语言。XML...

Global site tag (gtag.js) - Google Analytics