|
----------------------------------------------------------------- Author : zhyiwww E-Mail : zhyiwww@163.com Date : 2007-1-10 转载请注明出处(JavaResearch.org zhyiwww@163.com) -----------------------------------------------------------------
如果我们格式化一个xml文件话,我们可能使用下面的方法: try{ SAXReader saxReader = new SAXReader(); 注释:先读入一个文件流 Document doc= saxReader.read(new FileInputStream(new File(filePath))); 注释:创建输出格式 OutputFormat format = OutputFormat.createPrettyPrint(); 注释:制定输出xml的编码类型 format.setEncoding("GBK"); 注释:创建一个文件输出流 XMLWriter writer= new XMLWriter(new FileWriter(new File(filename)),format); 注释:将格式化后的xml串写入到文件 writer.write(doc); writer.close(); }catch(Exception ex){ …… }
经过的步骤是: 读取xml文件,然后再格式化输出。 那么,如果我们得到了一个XML的串,当然,是在内存中的,我们有如何返回一个格式化后的串呢? 其实也很简单,就是先把xml的串读到一个流中,然后解析,在格式化输出就可以了。下面就是我的实现;
注释:str是你的参数,也就是在内存中的没有格式化过的xml串 public static String format(String str) throws UnsupportedEncodingException, IOException, DocumentException { //System.out.println(" str : " + str); SAXReader reader=new SAXReader(); //System.out.println(reader); 注释:创建一个串的字符输入流 StringReader in=new StringReader(str); Document doc=reader.read(in); // System.out.println(doc.getRootElement()); 注释:创建输出格式 OutputFormat formater=OutputFormat.createPrettyPrint(); 注释:设置xml的输出编码 formater.setEncoding("utf-8"); 注释:创建输出(目标) StringWriter out=new StringWriter(); 注释:创建输出流 XMLWriter writer=new XMLWriter(out,formater); 注释:输出格式化的串到目标中,执行后。格式化后的串保存在out中。 writer.write(doc);   [1] [2] [3] 下一页
|