使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中,程序打成jar包,在命令行中执行如下命令即可:

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

主要的java代码如下:

  1. import java.io.BufferedInputStream;
  2. import java.io.File;
  3. import java.io.FileInputStream;
  4. import java.io.FileOutputStream;
  5. import java.io.IOException;
  6. import java.io.InputStream;
  7. import java.util.Iterator;
  8. import java.util.List;
  9. import java.util.Properties;
  10. import javax.servlet.http.HttpServlet;
  11. import org.dom4j.Document;
  12. import org.dom4j.DocumentException;
  13. import org.dom4j.Element;
  14. import org.dom4j.Node;
  15. import org.dom4j.io.SAXReader;
  16. import org.dom4j.io.XMLWriter;
  17. public class RefreshXml extends HttpServlet {
  18. private String xmlFilePath="";
  19. public void modifyXml(String xmlProperty) throws DocumentException, IOException {
  20. this.getProperties(xmlProperty);
  21. File file = new File(xmlFilePath);
  22. SAXReader reader = new SAXReader();
  23. Document doc = reader.read(file);
  24. List list;
  25. /*
  26. * 修改EntityProps
  27. */
  28. list = doc.selectNodes("//Entity_Groups//Entity//EntityProps");
  29. System.out.println("需要修改的EntityProps一共有:"+list.size()+"处。");
  30. for(int i=0;i<list.size();i++){
  31. Element elt = (Element) list.get(i);
  32. Node node = elt.selectSingleNode("Definition");
  33. if(node == null){
  34. Element info = elt.addElement("Definition");
  35. info.addAttribute("xml:space", "preserve");
  36. info.addText(elt.selectSingleNode("Name").getText());
  37. //              elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
  38. }else{
  39. elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
  40. }
  41. }
  42. /*
  43. * 修改AttributeProps
  44. */
  45. list = doc.selectNodes("//Entity_Groups//Entity//Attribute_Groups//Attribute//AttributeProps");
  46. System.out.println("需要修改的AttributeProps一共有:"+list.size()+"处。");
  47. for(int i=0;i<list.size();i++){
  48. Element elt = (Element) list.get(i);
  49. Node node = elt.selectSingleNode("Definition");
  50. if(node == null){
  51. //增加节点
  52. Element info = elt.addElement("Definition");
  53. info.addAttribute("xml:space", "preserve");
  54. info.addText(elt.selectSingleNode("Name").getText());
  55. //              elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
  56. }else{
  57. elt.selectSingleNode("Definition").setText(elt.selectSingleNode("Name").getText());
  58. }
  59. }
  60. System.out.println("修改完毕!");
  61. XMLWriter writer = new XMLWriter(new FileOutputStream(file));
  62. writer.write(doc);
  63. writer.close();
  64. }
  65. private void getProperties(String xmlProperty) throws IOException{
  66. //String configFile = xmlProperty;
  67. String configFile = "D:/Workspaces for MyEclipse 7.1/RefreshXml/src/xml.properties";
  68. InputStream is = new BufferedInputStream(new FileInputStream(new File(configFile)));
  69. if(is == null){
  70. is = this.getServletContext().getResourceAsStream(configFile);
  71. }
  72. Properties ps = new Properties();
  73. ps.load(is);
  74. xmlFilePath = ps.getProperty("xmlPath");
  75. }
  76. /**
  77. * @param args
  78. */
  79. public static void main(String[] args) {
  80. if (args.length < 1) {
  81. System.out.println("请输入程序所需的配置文件路径作为参数:");
  82. System.out.println("1、要修改的xml文件的名称。");
  83. } else {
  84. String xmlProperty = args[0];
  85. System.out.println(xmlProperty);
  86. RefreshXml rx = new RefreshXml();
  87. try {
  88. rx.modifyXml(xmlProperty);
  89. } catch (DocumentException e) {
  90. e.printStackTrace();
  91. } catch (IOException e) {
  92. e.printStackTrace();
  93. }
  94. }
  95. }
  96. }

配置文件xml.properties中的内容也比较简单:

xmlPath=C\:\\test\\2222.xml

如下是程序jar包:

RefreshXml2.jar

用dom4j修改xml(增加修改节点)的更多相关文章

  1. pyqt5_实例:修改xml文件中节点值

    需求: 将类似如下xml文件的externalid节点值修改成不重复的值 实现该功能的代码Func.py: #coding=utf-8 ''' Created on 2019年10月15日 @auth ...

  2. java操作xml文件--修改节点

          上一篇文章我介绍了SAX方法解析XML文件的过程,这篇文章讲解的内容是利用DOM方法修改XML文件的节点内容.       下面依然是首先贴出XML文件: <?xml version ...

  3. dom4j解析xml文档全面介绍

    一.dom4j介绍 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件的.dom4j是一个非常非常优秀的Java XML API,具有性能优异.功能强大和极端易用使用的特点, ...

  4. 【收藏用】--切勿转载JAVA 使用Dom4j 解析XML

    原帖地址 : http://blog.csdn.NET/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1) ...

  5. JAVA 使用Dom4j 解析XML

    [转自] http://blog.csdn.net/yyywyr/article/details/38359049 解析XML的方式有很多,本文介绍使用dom4j解析xml. 1.环境准备 (1)下载 ...

  6. dom4j操作xml文档

    java Dom4j解析XML文件 标签(空格分隔):java进阶 xml文档: <?xml version="1.0" encoding="UTF-8" ...

  7. Java进阶(二十七)使用Dom4j解析XML文件

    使用Dom4j解析XML文件 写在前面的话 由于论文实验要求,需要实现操作XML文档,为此想到了dom4j这个工具,使用之后深感受益.在此分享给大家,以此共勉. 注:本文转载自http://blog. ...

  8. 使用 Dom4j 对XML操作!!!

    转自:http://blog.csdn.net/redarmy_chen/article/details/12969219 dom4j是一个Java的XML API,类似于jdom,用来读写XML文件 ...

  9. dom4j修改,获取,增加xml中某个元素的属性值

    XML文件: <?xml version="1.0" encoding="UTF-8"?> <vrvscript> <item I ...

随机推荐

  1. sqoop安装与简单实用

    一,sqoop安装 1.解压源码包 2.配置环境变量 3.在bin目录下的 /bin/configsqoop 注释掉check报错信息 4.配置conf目录下 /conf/sqoop-env.sh 配 ...

  2. Redis5.0:在这些场景使用,高效率还低成本!

    很多大型电商网站.视频直播和游戏应用等,存在大规模数据访问,对数据查询效率要求高,且数据结构简单,不涉及太多关联查询. 这种场景使用Redis,在速度上对传统磁盘数据库有很大优势,能够有效减少数据库磁 ...

  3. 支持向量机SVM 初识

    虽然已经学习了神经网络和深度学习并在几个项目之中加以运用了,但在斯坦福公开课上听吴恩达老师说他(在当时)更喜欢使用SVM,而很少使用神经网络来解决问题,因此来学习一下SVM的种种. 先解释一些概念吧: ...

  4. java不用任何已有方法完全自写的去重法

    package aa; class InsertSort{ private long[] a; private int nElems; //构造方法 public InsertSort(int max ...

  5. 如何理解IPD+CMMI+Scrum一体化研发管理解决方案之Scrum篇

    如何快速响应市场的变化,如何推出更有竞争力的产品,如何在竞争中脱颖而出,是国内研发企业普遍面临的核心问题,为了解决这些问题,越来越多的企业开始重视创新与研发管理,加强研发过程的规范化,集成产品开发(I ...

  6. 【探路者】互评beta版本

    成员博客 1蔺依铭:http://www.cnblogs.com/linym762/ 2张恩聚:http://www.cnblogs.com/zej87/ 3米赫:http://www.cnblogs ...

  7. c# WPS DLL及其调用

    1.dll分享(含xsl及docx的dll) 链接:https://pan.baidu.com/s/1c1ImV14OndmvIb4W-_WL2A 密码:d2rx 2.方法: 1.先在类的前面(类外面 ...

  8. c# 画image

    这是一个例子,从数据库中读取然后赋伪彩,生成bitmap,给到imagebox控件(其image属性为平铺). https://pan.baidu.com/s/1hf_fGFHjGoDK_gywuhg ...

  9. CS小分队第二阶段冲刺站立会议(5月28日)

    昨日成果:昨天对我们的软件的主界面进行了思考,考虑到许多人建议我们团队添加可以自主增加软件快捷键的功能,我对这一想法的可行性和项目总体策划进行评估分析后,决定正式实施:已经完成从电脑上添加文件在我们的 ...

  10. [转]精选!15个必备的VSCode插件

    Visual Studio Code 是由微软开发的一款免费.跨平台的文本编辑器.由于其卓越的性能和丰富的功能,它很快就受到了大家的喜爱. 就像大多数 IDE 一样,VSCode 也有一个扩展和主题市 ...