首先属性中的回车换行对我来说非常有用,可是在使用过程中发现dom4j自动把回车换行去掉了。
我需要生成的部分xml是这样的。
<data>
@H=16*16
@C=60
我的中国
@I=000
@K=2
@O=000
@Q
</data>
生成xml的部分代码
- try {
- StringWriter writer = new StringWriter();
- OutputFormat format = OutputFormat.createPrettyPrint();
- format.setEncoding("GB2312");
- XMLWriter xmlwriter = new XMLWriter(writer, format);
- xmlwriter.write(document);
- returnValue = writer.toString();
- } catch (Exception ex) {
- ex.printStackTrace();
- }
用如上代码后生成xml的结果为
<data>@H=16*16 @C=60 我的中国 @I=000 @K=2 @O=000 @Q</data>
证实在生成xml前的代码有回车换行后,详细想“一定是dom4j的问题“
问题就出在OutputFormat.createPrettyPrint();这上。
- /**
- * A static helper method to create the default pretty printing format. This
- * format consists of an indent of 2 spaces, newlines after each element and
- * all other whitespace trimmed, and XMTML is false.
- *
- * @return DOCUMENT ME!
- */
- public static OutputFormat createPrettyPrint() {
- OutputFormat format = new OutputFormat();
- format.setIndentSize(2);
- format.setNewlines(true);
- format.setTrimText(true);
- format.setPadText(true);
- return format;
- }
- /**
- * A static helper method to create the default compact format. This format
- * does not have any indentation or newlines after an alement and all other
- * whitespace trimmed
- *
- * @return DOCUMENT ME!
- */
- public static OutputFormat createCompactFormat() {
- OutputFormat format = new OutputFormat();
- format.setIndent(false);
- format.setNewlines(false);
- format.setTrimText(true);
- return format;
- }
createPrettyPrint()方法中有
format.setTrimText(true);
问题就出在这里。
将format.setTrimText(false); 即可
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("utf-8");// 设置XML文件的编码格式
format.setLineSeparator("\n");
format.setTrimText(false);
format.setIndent(" ");
Document doc = DocumentHelper.createDocument();