`

用dom4j修改xml(增加修改节点)

    博客分类:
  • Java
阅读更多
使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中,程序打成jar包,在命令行中执行如下命令即可:

[img]http://dl.iteye.com/upload/attachment/150593/6b4ac972-cf45-3582-9a04-5e88bd0c962d.jpg" alt="[/img]

主要的java代码如下:

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Iterator;
import java.util.List;
import java.util.Properties;

import javax.servlet.http.HttpServlet;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;


public class RefreshXml extends HttpServlet {
	private String xmlFilePath="";
	
	public void modifyXml(String xmlProperty) throws DocumentException, IOException {
		this.getProperties(xmlProperty);
		File file = new File(xmlFilePath);
		SAXReader reader = new SAXReader();
		Document doc = reader.read(file);
		List list;

		/*
		 * 修改EntityProps
		 */
		list = doc.selectNodes("//Entity_Groups//Entity//EntityProps");
		System.out.println("需要修改的EntityProps一共有:"+list.size()+"处。");
		for(int i=0;i<list.size();i++){
			Element elt = (Element) list.get(i);
			Node node = elt.selectSingleNode("Definition");
			if(node == null){
				Element info = elt.addElement("Definition");
				info.addAttribute("xml:space", "preserve");
				info.addText(elt.selectSingleNode("Name").getText());
//				elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
			}else{
				elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
			}
			
		}
		
		/*
		 * 修改AttributeProps
		 */
		list = doc.selectNodes("//Entity_Groups//Entity//Attribute_Groups//Attribute//AttributeProps");
		System.out.println("需要修改的AttributeProps一共有:"+list.size()+"处。");
		for(int i=0;i<list.size();i++){
			Element elt = (Element) list.get(i);
			Node node = elt.selectSingleNode("Definition");
			if(node == null){
                                //增加节点
				Element info = elt.addElement("Definition");
				info.addAttribute("xml:space", "preserve");
				info.addText(elt.selectSingleNode("Name").getText());
//				elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
			}else{
				elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
			}
		}
		System.out.println("修改完毕!");
		
		XMLWriter writer = new XMLWriter(new FileOutputStream(file));
		writer.write(doc);
		writer.close();
		
	}
	
	private void getProperties(String xmlProperty) throws IOException{
		//String configFile = xmlProperty;
		String configFile = "D:/Workspaces for MyEclipse 7.1/RefreshXml/src/xml.properties";
		InputStream is = new BufferedInputStream(new FileInputStream(new File(configFile)));
		if(is == null){
			is = this.getServletContext().getResourceAsStream(configFile);
		}
		Properties ps = new Properties();
		ps.load(is);
		xmlFilePath = ps.getProperty("xmlPath");
	}  
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		if (args.length < 1) {
			System.out.println("请输入程序所需的配置文件路径作为参数:");
			System.out.println("1、要修改的xml文件的名称。");
		} else {
			String xmlProperty = args[0];
			System.out.println(xmlProperty);
			RefreshXml rx = new RefreshXml();
			try {
				rx.modifyXml(xmlProperty);
			} catch (DocumentException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
	}
}


配置文件xml.properties中的内容也比较简单:
xmlPath=C\:\\test\\2222.xml

如下是程序jar包:
RefreshXml2.jar



  • 大小: 3.3 KB
分享到:
评论

相关推荐

    使用DOM4J对XML文件操作-添加、修改、删除、获取元素节点

    在本教程中,我们将深入探讨如何使用DOM4J来执行基本的XML操作,包括添加元素、修改元素、删除元素以及获取元素节点。 1. **添加元素节点** 在DOM4J中,添加元素节点通常涉及创建一个新的`Element`对象,然后将其...

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

    在本教程中,我们将深入探讨如何使用DOM4J解析(读取)XML节点数据,不受XML层级的限制。 首先,确保你已经下载了必要的依赖,即DOM4J库。通常,这将是一个名为`dom4j-x.x.x.jar`的文件,其中x.x.x是DOM4J的版本号...

    dom4j解析xml详解

    12. **Node**: 为DOM4J中的所有XML节点提供一个多态接口,包括`Element`、`Attribute`、`Comment`等,简化了节点类型的处理。 13. **NodeFilter**: 定义了节点过滤器的行为,可以在遍历节点时应用条件筛选。 14. **...

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

    Dom4J的核心类`Document`代表整个XML文档,而`Element`类则表示文档中的每个节点。通过这些类,开发者可以构建复杂的XML结构。 #### 二、生成XML文档的步骤 1. **初始化文档对象**:使用`DocumentHelper.create...

    dom4j读写xml文档实例

    要使用DOM4J读取XML文档,首先需要创建一个`SAXReader`对象,然后调用`read`方法传入XML文件路径。这将返回一个`Document`对象,我们可以从中获取所有元素信息。 ```java File file = new File("path_to_xml_file")...

    dom4j解析xml文件的压缩包

    这个压缩包包含了DOM4J的完整版本,适用于那些希望在Java项目中使用DOM4J进行XML操作的开发者。 首先,让我们深入了解一下DOM4J的核心概念和特性: 1. **Document对象**:DOM4J中的Document对象代表整个XML文档。...

    使用Maven管理项目,实现DOM4j操作XML文件

    DOM4j则是一个强大的Java库,用于处理XML文档,提供了丰富的API来实现XML的读取、写入、修改等操作。在这个示例中,我们将深入探讨如何利用Maven管理和DOM4j来操作XML文件。 首先,让我们了解一下Maven。Maven是...

    dom4j解析xml

    以下是一个简单的DOM4J代码示例,展示如何使用DOM4J删除XML文档中的一个节点: ```java import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j....

    dom4j解析XML所需jar包

    5. **XML文档操作**:DOM4J提供了丰富的API,如添加、删除、移动和复制XML节点,以及修改节点内容和属性值。这些功能使得对XML文档的维护和更新变得非常方便。 6. **XPath和XSLT转换**:除了基本的XML操作,DOM4J还...

    使用dom4j解析XML

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

    java dom4j解析xml

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

    dom4j解析xml实例

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

    在本文中,我们将深入探讨DOM4J如何进行XML操作,包括增加、删除和修改XML元素。 首先,我们需要理解XML的基本结构。XML(可扩展标记语言)是一种用于存储和传输数据的标准格式,它使用标签来描述数据。DOM4J通过...

    使用dom4j将xml字符串转换成Bean对象

    首先,dom4j是一个强大的Java XML API,它提供了丰富的功能,如读取、写入、修改和操作XML文档。其核心概念是Element(元素)、Attribute(属性)和Document(文档)。通过这些对象,我们可以方便地处理XML文档的...

    dom4j解析xml文件代码示例

    在本示例中,我们将深入探讨如何使用DOM4J解析XML文件,以`CacheInit.java`作为我们的核心代码示例,并参考`emailTemplateConfig.xml`作为实际操作的对象。 首先,让我们了解XML(eXtensible Markup Language)。...

    DOM4J 解析XML

    5. **XPath(路径表达式)**:DOM4J支持XPath,这是一种强大的查询语言,可以用来定位XML文档中的特定节点。 6. **DocumentBuilderFactory和DocumentBuilder**:这两个类用于创建和配置DOM4J解析器。 7. **Reader...

    用dom4j解析xml文件

    而DOM4J是Java中一个强大的、灵活的处理XML的库,它提供了丰富的API,使得XML的解析、创建、遍历以及修改变得更为简便。本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,...

    dom4j 解析xml实例

    通过这个实例,我们可以学习到DOM4J解析XML的基本操作,包括加载XML文件、访问和修改元素、以及保存更改。这只是一个简单的例子,DOM4J库还提供了更高级的功能,如XPath查询、事件驱动的处理模式等,可以满足更复杂...

Global site tag (gtag.js) - Google Analytics