1. @SuppressWarnings("unchecked")
  2. @Override
  3. public void insertCustomInfo(File file, String modelCode,List<Property> props) {
  4. SAXReader saxReadr = new SAXReader();// 得到SAXReader对象
  5. try {
  6. org.dom4j.Document doc=saxReadr.read(file);
  7. org.dom4j.Element root = doc.getRootElement();// 得到根节点
  8. if (null != props && props.size() > 0) {
  9. //初始化删除添加的节点
  10. org.dom4j.Element styleElement = root.element("Styles");
  11. /*Iterator<org.dom4j.Element> it =styleElement.elementIterator();
  12. while(it.hasNext()) {
  13. org.dom4j.Element e = it.next();
  14. if(e.)
  15.  
  16. }*/
  17. //List<org.dom4j.Element> domList=styleElement.selectNodes("/.");
  18. //开始增加数据
  19. if (null != styleElement) {
  20. styleElement.addComment("custome style start");
  21. for (Property p : props) {
  22. //FIXME 根据属性样式不同,添加不同的样式
  23. org.dom4j.Element se=styleElement.addElement("Style");
  24. se.addAttribute("ss:ID", p.getCode());
  25. se.addElement("NumberFormat");
  26. se.addElement("Protection");
  27. }
  28. styleElement.addComment("custome style end");
  29. }
  30. org.dom4j.Element workSheetElement = root.element("Worksheet");
  31. if (null != workSheetElement) {
  32. org.dom4j.Element tableElement = workSheetElement.element("Table");
  33. if (null != tableElement) {
  34. org.dom4j.Element rowElement = tableElement.element("Row");
  35. if (null != rowElement) {
  36. for (Property p : props) {
  37. org.dom4j.Element cellEle=rowElement.addElement("Cell");
  38. cellEle.addElement("Data").addAttribute("ss:Type", "String").addText(InternationalResource.get(p.getDisplayName(), getCurrentLanguage()));
  39. org.dom4j.Element commentEle=cellEle.addElement("Comment").addAttribute("ss:Author", "");
  40. //commentEle.add(attribute);
  41. }
  42. }
  43. List<org.dom4j.Element> columnElements=tableElement.elements("Column");
  44. int size=columnElements.size();
  45. if(null!=columnElements&&columnElements.size()>0) {
  46. org.dom4j.Element colE = tableElement.element("Column");
  47. if (null != colE) {
  48. for (Property p : props) {
  49. colE.addElement("Column").addAttribute("ss:Index", String.valueOf(size++));
  50. colE.addElement("Column").addAttribute("ss:Index", String.valueOf(size++));
  51. }
  52. }
  53. }
  54. }
  55. }
  56.  
  57. }
  58. OutputFormat format = OutputFormat.createPrettyPrint();
  59. try {
  60. XMLWriter writer = new XMLWriter(new FileWriter(file), format);
  61. writer.write(doc);
  62. writer.flush();
  63. writer.close();
  64. } catch (UnsupportedEncodingException e) {
  65. e.printStackTrace();
  66. } catch (IOException e) {
  67. e.printStackTrace();
  68. }
  69. log.info(root.getName());
  70. } catch (DocumentException e) {
  71. log.warn(e.getMessage());
  72. }
  73.  
  74. }

dom4j修改xml文件的更多相关文章

  1. 【dom4j xml】使用dom4j处理XML文件--测试过程遇到的问题

    首先 关于dom4j的API,有如下: 当然  其中的实体引用有以下: 测试使用环境: 使用Maven搭建web环境,pom.xml文件配置如下: <project xmlns="ht ...

  2. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  3. 使用dom4j对xml文件进行增删改查

    1.使用dom4j技术对dom_demo.xml进行增删改查 首选要下载dom4j的jar包 在官网上找不到,网上搜索了一下在这个链接:http://sourceforge.net/projects/ ...

  4. 使用dom4j 解析xml文件

    //使用dom4j 解析xml文件,升级版,dom4j是对dom的封装 //重点 package com.offcn.utils; import java.io.File; import java.i ...

  5. dom4j 解析XML文件

    <?xml version="1.0" encoding="UTF-8"?> <!-- 手机的根节点 --> <Phones> ...

  6. java基础73 dom4j修改xml里面的内容(网页知识)

    1.DOM4J对XML文件进行增删改操作 实现代码 package com.shore.code; import java.io.File; import java.io.FileOutputStre ...

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

    用dom4j修改xml(增加修改节点) 博客分类: Java XMLJavaMyeclipseServlet  使用dom4j修改解析xml,xml文件的位置是配置在xml.properties文件中 ...

  8. Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)

    1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...

  9. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

随机推荐

  1. 学习XAML中的一些基本语法

    1:slider 控件 2:x:名称空间的使用 3:事件处理器 event handler {    <Button x:Name="button1" Click=" ...

  2. C++ socket开发1

    服务端 setlocale(LC_ALL,"Chinese-simplified"); WORD wVersionRequested; WSADATA wsaData; int e ...

  3. iOS开发——百度地图SDK集成

    (正在形成文档,待更新……)

  4. jQuery分析(3) - jQuery.fn.init

    1.前言 上一篇jQuery分析(2)中了解了jQuery库的骨架实现原理,这就好比摇滚音乐,摇滚音乐不是某种音乐他就像一个音乐盒子,里面包含了各种不同的摇滚风格(山地.朋克.乡村.流行.硬摇.金属. ...

  5. AngularJS2学习

    @Input @Input是用来定义模块的输入的,用来让父模块往子模块传递内容: @Component({ selector: 'bank-account', template: ` Bank Nam ...

  6. SGU 239.Minesweeper

    题意: 如图,一列未知的区域长度为n(≤1000),给出第二列的数字,求区域中雷的排列有多少种. Solution: 搜索.这题看上去1000的范围很大,实际上加上合理的剪枝,状态数会变得非常非常少. ...

  7. PHP通过(PDO)Mysql表字段一键生成创建sqlite的SQL

    首发于:http://www.zzzzy.com/201406053158.html /** * Mysql表字段一键生成创建sqlite的SQL 2 * @author: Skiychan < ...

  8. PHP 自 5.2 到 5.6 中新增的功能详解

    截至目前(2014.2), PHP 的最新稳定版本是 PHP5.5, 但有差不多一半的用户仍在使用已经不在维护 [注] 的 PHP5.2, 其余的一半用户在使用 PHP5.3 [注].因为 PHP 那 ...

  9. (转载)在Delphi中利用MSDASC来配置数据库链接

    在Delphi中利用MSDASC来配置数据库链接 在运行期进行数据库的连接是一个问题,自己写一个窗体配置吧,数据库不一样,所用的参数也不一样,还有那讨厌的连接字符串,有时真不知该写什么好.那天无意中发 ...

  10. 启动Tomcat出现Using CATALINA_BASE

    有一次命令行启动Tomcat的时候,出现: Using CATALINA_BASE: "D:\apache-tomcat-6.0.35"Using CATALINA_HOME: & ...