使用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

最新文章

  1. MongoDB初识
  2. Manage application.conf in several environments
  3. C# 控件的自定义拖动、改变大小方法
  4. 用ul 来制作导航栏的几个要点
  5. angularJs表单校验(超级详细!!!)
  6. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
  7. 当前标识(IIS APPPOOL\DefaultWebSite)没有对“C:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files“的写访问权限
  8. 将正确的 HTTP 头转发给后端服务器的一些问题
  9. windows下mysql自动定时备份bat
  10. ogg实现oracle到sql server 2005的同步
  11. Android PagerAdapter
  12. 数据结构——UVA 1600 机器人巡逻
  13. 在MFC对话框中添加状态栏
  14. Coursera 机器学习笔记(六)
  15. STM8程序在IAR中报错 unable to allocate space for sections
  16. ●BZOJ 1531 [POI2005]Bank notes
  17. Linux——模拟实现一个简单的shell(带重定向)
  18. 使用 acme.sh 签发续签 Let‘s Encrypt 证书 泛域名证书
  19. Java的Fork/Join任务
  20. CloudStack学习-3

热门文章

  1. JUC——JUC开发简介(一)
  2. 建立 Python 虚拟环境
  3. java之接口开发-初级篇-socket通信
  4. Jenkins之Sonar 代码检查
  5. K-means + PCA + T-SNE 实现高维数据的聚类与可视化
  6. 华为ensp使用
  7. Alpha冲刺——第六天
  8. HDU 5501 The Highest Mark
  9. ubuntu16.04卸载火狐,Amazon
  10. JavaWeb应用的生命周期