xml输出的格式美化,字符串的xml格式美化

在解析xml中经常会遇到这两个问题:一是输出的xml文件是需要美化;二是输入的xml也需要美化之后转成字符串。正好目前项目中解析xml文件的时候用到了这两个过程,在此记录记录方便今后查阅。


/**
* 将符合xml的字符串进行美化,美化后的字符串输出后与xml文件中的效果一样
* @param str
* @return
*/
public static String strChangeToXML(String str) {
org.dom4j.Document document = null;
try {
document = DocumentHelper.parseText(str);
} catch (DocumentException documentexception) {
// TODO Auto-generated catch block
documentexception.printStackTrace();
}
OutputFormat outputformat = OutputFormat.createPrettyPrint();
// 这里用于控制xml输出的头信息(如:<?xml version="1.0" encoding="UTF-8"?>),true 表示不输出; false 表示输出
outputformat.setSuppressDeclaration(true);
StringWriter stringwriter = new StringWriter();
XMLWriter xmlwriter = new XMLWriter(stringwriter, outputformat);
try {
xmlwriter.write(document);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return stringwriter.toString().trim();
}



/**
* 解析xml文件中所有的节点(支持无限级子节点)
*
* @param doc
* @return
*/
public List<String> output(Document doc) {
List<String> elementList = new ArrayList<String>();
Element root = doc.getRootElement();
List<Element> list = new ArrayList<Element>();
list.add(root);
boolean exitFlag = false;
while (list != null) {
Element element = null;
Element ele = null;
Iterator ite = list.iterator();
if ((exitFlag = ite.hasNext()) == true) {
// 取得当前要解析的Element
ele = (Element) ite.next();
// 在ite中移除要该Element对象
ite.remove();
}
if (ele != null) {
// 迭代ele对象的子节点
for (Iterator i = ele.elementIterator(); (i != null)
&& (i.hasNext());) {
// 获取当前子节点
element = (Element) i.next();
// 将element放入到list中
list.add(element);
if (element != null)
// 将每个节点放入到List中
elementList.add(element.getName());
}
}
// 在这里退出此方法
if (exitFlag == false) {
break;
}
}
return elementList;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值