扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
在本页阅读全文(共2页)
如果我们格式化一个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);
//writer.close();
System.out.println(out.toString());
注释:返回我们格式化后的结果
return out.toString();
}
示例:
格式化前的xml串:
<?xml version="1.0" encoding="utf-8">
<schemes>
<scheme>
<num>0</num>
<line>
<lnName>aaaa</lnName>
<stops>
<stop>
<spName>bbbb</spName>
</stop>
<stop>
<spName>ccc</spName>
</stop>
<stop>
<spName>dddd</spName>
</stop>
<stop>
<spName>eee</spName>
</stop>
<stop>
<spName>ffff</spName>
</stop>
<stop>
<spName>eeeee</spName>
</stop>
</stops>
</line>
<line>
<lnName>pppp</lnName>
<stops>
<stop>
<spName>kkkk</spName>
</stop>
<stop>
<spName>ssss</spName>
</stop>
<stop>
<spName>eeeeee</spName>
</stop>
<stop>
<spName>ttttt</spName>
</stop>
</stops>
</line>
</scheme>
</schemes>
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者