用dom4j修改xml(增加修改节点)
使用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
用dom4j修改xml(增加修改节点)的更多相关文章
- pyqt5_实例:修改xml文件中节点值
需求: 将类似如下xml文件的externalid节点值修改成不重复的值 实现该功能的代码Func.py: #coding=utf-8 ''' Created on 2019年10月15日 @auth ...
- java操作xml文件--修改节点
上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容. 下面依然是首先贴出XML文件: <?xml version ...
- dom4j解析xml文档全面介绍
一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...
- 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML
原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...
- JAVA 使用Dom4j 解析XML
[转自] http://blog.csdn.net/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载 ...
- dom4j操作xml文档
java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...
- Java进阶(二十七)使用Dom4j解析XML文件
使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...
- 使用 Dom4j 对XML操作!!!
转自:http://blog.csdn.net/redarmy_chen/article/details/12969219 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件 ...
- dom4j修改,获取,增加xml中某个元素的属性值
XML文件: <?xml version="1.0" encoding="UTF-8"?> <vrvscript> <item I ...
随机推荐
- Pycharm 2018.2.1-2018.1
请支持正版,谢谢! 下载激活包 激活包地址 解压后会得到两个包: JetbrainsCrack-2.10-release-enc.jar JetbrainsCrack-3.1-release-enc. ...
- 简述AQS原理
这是一道面试题:简述AQS原理 AQS核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态.如果被请求的共享资源被占用,那么就需要一套线程阻塞 ...
- Mysql 表创建语句
# 新建bigData数据库 CREATE DATABASE bigData; USE bigData; # 创建dept表 CREATE TABLE dept( id INT UNSIGNED PR ...
- “Hello World!”团队第三周召开的第三次会议
今天是我们团队“Hello World!”团队第三周召开的第三次会议.博客内容: 一.会议时间 二.会议地点 三.会议成员 四.会议内容 五.todo list 六.会议照片 七.燃尽图 八.代码地址 ...
- 【探路者】团队Alpha周贡献分数分配结果
经本组成员商议,根据老师提供的分数,(每人携带10分进入团队,[探路者]团队7人,共计35分). 本周每位同学携带10分进入组内,7人共计70分.分数公布如下: 吴雨丹 15分 贾雅杰 12分 蔺依铭 ...
- css3浏览器私有属性前缀使用详解
什么是浏览器私有属性前缀 CSS3的浏览器私有属性前缀是一个浏览器生产商经常使用的一种方式.它暗示该CSS属性或规则尚未成为W3C标准的一部分. 以下是几种常用前缀 -webkit- -moz- -m ...
- [并查集] More is Better
题目描述 Mr Wang wants some boys to help him with a project. Because the project is rather complex, the ...
- spring复杂数据类型传递
1.VO对象与PO对象的区别: PO(persistant object) 持久对象:通常对应数据模型(数据库),本身还有部分业务逻辑的处理.可以看成是与数据库中的表相映射的java对象.最简单的PO ...
- IT行业所面临的问题
在阅读了“2015 IT行业大学生就业分析报告”和“2014年十大最热门行业和职业排行榜 IT行业最吃香_联展新闻”两则新闻后,我决定用一篇和老师对话的形式来表达我的感受. dym:人潮汹涌的招聘市场 ...
- beta阶段评语
首先我说一下自己心中的排序 1.俄罗斯方块 2 连连看 3 考试管理系统 4 食物链教学软件 5 约跑App 6 礼物挑选小工具 我的理由: 新峰的俄罗斯的方块,虽然当初的亮点没做出来,但是整体流程完 ...