现在有任务要求比对2个XML文件是否相同,我把XML文件转换成String类型之后比较发现比较不通过,原来还有格式要求,带换行或者空格的话2个XML格式比较就不一样,所以需要进行格式化。
从网上搜下下,然后改了改就可以了。
view plaincopy to clipboardprint?
/**
* 格式化XML文件
* @param xml
* @return
* @throws DocumentException
* @throws IOException
*/
private String formatXml(String xml) throws DocumentException, IOException{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new ByteArrayInputStream(xml.getBytes()));
//创建输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
//制定输出xml的编码类型
format.setEncoding("gb2312");
StringWriter writer = new StringWriter();
//创建一个文件输出流
XMLWriter xmlwriter = new XMLWriter( writer, format );
//将格式化后的xml串写入到文件
xmlwriter.write(document);
String returnValue = writer.toString();
writer.close();
//返回编译后的字符串格式
return returnValue;
}
/**
* 格式化XML文件
* @param xml
* @return
* @throws DocumentException
* @throws IOException
*/
private String formatXml(String xml) throws DocumentException, IOException{
SAXReader saxReader = new SAXReader();
Document document = saxReader.read(new ByteArrayInputStream(xml.getBytes()));
//创建输出格式
OutputFormat format = OutputFormat.createPrettyPrint();
//制定输出xml的编码类型
format.setEncoding("gb2312");
StringWriter writer = new StringWriter();
//创建一个文件输出流
XMLWriter xmlwriter = new XMLWriter( writer, format );
//将格式化后的xml串写入到文件
xmlwriter.write(document);
String returnValue = writer.toString();
writer.close();
//返回编译后的字符串格式
return returnValue;
}
OutputFormat类的createCompactFormat()方法或createPrettyPrint()方法格式化输出,默认采用createCompactFormat()方法,显示比较紧凑
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/xiaxiaorui2003/archive/2009/04/19/4091752.aspx