dom4j 回写 xml 时会给xml文件其他部分内容添加空白行
2017-10-19 01:08
447 查看
我有这样一个需求,将一段带有标签、换行符、缩进符的字符串直接当做文本添加到元素中,
先按照正常的 dom4j 操作流程写入这段字符串:如下
这时会遇到一些问题:
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,即可解决。
代码如下:
先按照正常的 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();
相关文章推荐
- Dom4j解析xml文件-操作节点和属性及写入其他xml文件
- 在已知XML文件内容时,使用dom4j简单解析XML(String类型的XML)(用于服务器端)
- 使用dom4j创建XML文件,并读取XML内容
- Dom4j解析xml文件-操作节点和属性及写入其他xml文件
- 使用dom4j解析xml标签,将标签属性与文本内容添加进集合
- 06_XML的写入_dom4j添加、删除、修改Xml文件内容
- dom4j创建XML添加属性和标签和内容添加CDATA 删除属性
- dom4j解析xml文件,添加新节点,添加节点内容,读取文件中节点内容作为新增节点内容
- dom4j的读写xml文件,读写xml字符串
- 向其他线程创建的控件中添加内容
- dom4j读取xml内容(SAX+XPATH)
- C# XML 给xml文件添加根节点
- XML与DataTable/DataSet互转(C#) 把数据库中表的内容转存为XML文件
- JAXP,sax与dom4j解析xml文档及XPath在文档内容定位中的应用(持续更新,初学者的野路子、参考和想当然,不断学习和专业化)
- c#设置xml内容不换行及属性xsi:nil=true的空节点添加
- c#设置xml内容不换行;添加属性为xsi:nil="true"的空节点
- DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件
- Dom4j 读取一个XML文件和将String写成XML文件
- dom4j处理xml文件,读取xml字符串,格式化xml文件
- Ubuntu下wxWidgets学生公寓管理编程,sqlite3的用法(mysql数据库),窗体,下面是部分添加和删除功能,其他功能可以联系我。。