dom4j 生成xml时,属性值中的回车换行问题

首先属性中的回车换行对我来说非常有用,可是在使用过程中发现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();

相关推荐