dom4j 回写 xml 时会给xml文件其他部分内容添加空白行
来源:互联网 发布:淘宝做工瑕疵运费 编辑:程序博客网 时间:2024/05/31 05:28
我有这样一个需求,将一段带有标签、换行符、缩进符的字符串直接当做文本添加到元素中,
先按照正常的 dom4j 操作流程写入这段字符串:如下
//创建解析器 SAXReader saxReader = new SAXReader(); //得到document Document document = saxReader.read(xmlPath); //得到根节点 Element root = document.getRootElement(); //得到指定元素 List<Element> list = root.elements("select"); //将文本添加进去 list.get(0).addText("[xmlContent]"); //回写xml OutputFormat format = OutputFormat.createPrettyPrint(); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(xmlPath),format); xmlWriter.write(document); xmlWriter.close();
这时会遇到一些问题:
1、写入时 ‘<’ 等字符会被转义,添加了后面这句话拒绝符号转义,xmlWriter.setEscapeText(false);
2、默认的,format会把我们的字符串中的换行缩进等格式清空;format.setTrimText(false); 这样来阻止格式清空
3、这样就来到了我们最大的难题,很奇怪的,在多次执行这段语句向不同标签添加内容的时候,每次会给我们其他同样标签的位置添加空格,看了一些网友遇到的问题,都没有解决掉,比如:format.setNewLineAfterDeclaration(false); 这个方法也不能解决这个问题。
我将 xmlWriter 和 format 的 set 方法排列组合,经过了很多次尝试之后,发现问题出在 xmlWriter.setEscapeText(false); 这句话上面;format.setIndent(true); format.setNewlines(false); 添加这两句话,设置缩进为true,换行为false,即可解决。
代码如下:
OutputFormat format = OutputFormat.createPrettyPrint(); format.setIndent(true); format.setTrimText(false); format.setNewlines(false); XMLWriter xmlWriter = new XMLWriter(new FileOutputStream(xmlPath),format); xmlWriter.setEscapeText(false); xmlWriter.write(document); xmlWriter.close();
供参考。
阅读全文
0 0
- dom4j 回写 xml 时会给xml文件其他部分内容添加空白行
- xml文件--DOM4J写xml文件
- dom4j写xml文件测试
- dom4j 写简单XML文件
- Dom4j操作XML文件---写文件
- 写一个XML文件,用Dom4j 解析
- Dom4j写XML
- 用dom4j写xml
- 用dom4j写XML
- dom4j写xml
- Dom4j-操作节点和属性及写入其他xml文件
- XML---DOM4J解析XML文件
- XML DOM4J解析XML文件
- 给xml文件添加dtd文件
- dom4j生成xml文件
- xml文件解析-DOM4J
- Dom4j操作XML文件
- xml文件操作(dom4j)
- putty与xshell
- 解决Linux下使用QQ的问题
- 消息中间件以及RabbitMQ简介
- 【Java】正则表达式
- mongodb入门
- dom4j 回写 xml 时会给xml文件其他部分内容添加空白行
- position属性:
- AnglesToConfig
- Oracle10g迁移备份、搬迁数据库到另外一台服务器
- php入门
- C++第三方库使用
- 数据结构实验之串一:KMP简单应用
- 在云主机构建的hadoop集群上运行程序(接上一篇博文)
- C语言操作符 小结