/**
* 通过 org.dom4j.io.OutputFormat 来设置XML文档输出格式
*/
OutputFormat format = OutputFormat.createPrettyPrint()//设置XML文档输出格式
format.setEncoding("GB2312")//设置XML文档的编码类型
format.setSuppressDeclaration(true)
format.setIndent(true)//设置是否缩进
format.setIndent(" ")//以空格方式实现缩进
format.setNewlines(true)//设置是否换行
楼主的问题应该在于如何创建出指定格式的format打开dom4j的文档查看OutputFormat类
该类其实提供了2个static方法,返回一个outputFormat对象
createCompactFormat() 返回的outputForamt的格式为压缩,即空格,回车等都被忽略了
createPrettyPrint() 这个方法返回的outputFormat的格式则为良好格式
因为在html语言中,大家书写都喜欢换行和缩进,保持良好的书写习惯,当在xml语言中空格和换行都作为原始内容被处理,即空格和换行对应也是一个对象
所以 Document doc = DocumentHelper.parseText(str)
这段代码在解析的时候并没有针对空格和换行进行 *** 作
OutputFormat针对此专门提供了2个satic方法来获得对应的格式
document的asXML方法的源码中new出的outputFormat其实是一个空的格式
以上分析仅为个人看法,毕竟我不是dom4j的开发人员,如有错误,请指正
以下为相关代码:
import java.io.StringWriter
import org.dom4j.Document
import org.dom4j.DocumentHelper
import org.dom4j.io.OutputFormat
import org.dom4j.io.XMLWriter
public class Demo {
public static void main(String[] args) throws Exception {
String str = "<file>"+
"<chapter id=\"1\" name=\"a\"/>" +
"<chapter id=\"2\" name=\"b\"/>" +
"<chapter id=\"3\" name=\"c\"/>" +
"<chapter id=\"4\" name=\"d\"/>" +
"</file>"
// 将字符串格式转换成document对象
Document document = DocumentHelper.parseText(str)
// 注意,用这种方式来创建指定格式的format
OutputFormat format = OutputFormat.createPrettyPrint()
// 创建String输出流
StringWriter out = new StringWriter()
//包装String流
XMLWriter writer = new XMLWriter(out, format)
// 将当前的document对象写入底层流out中
writer.write(document)
writer.close()
System.out.println(out.toString())
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)