如何用J*a代码格式化(美化)XML字符串

可用J*a内置Transformer类配合DOM解析器格式化XML字符串,核心是解析为Document后设置OutputKeys.INDENT为"yes"及缩进空格数(JDK 8+需额外设置indent-amount),再通过transform输出;对不规范XML需预校验或包裹临时根标签;第三方库如jsoup、dom4j亦可实现但需引入依赖。

如何用java代码格式化(美化)xml字符串

可以用J*a内置的Transformer类配合DOM解析器来格式化XML字符串,核心是将字符串解析为Document对象,再用Transformer输出带缩进的XML。

使用Transformer实现XML美化

这是最常用、无需第三方依赖的方式。关键在于设置OutputKeys.INDENT为"yes",并指定缩进空格数(如4个):

  • 先用DocumentBuilder将XML字符串解析成Document对象
  • 创建Transformer实例,设置输出属性:编码、缩进、缩进空格数
  • 用DOMSource和StringWriter配合transform()方法获取美化后的字符串
注意:JDK 8+中需额外调用setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4")才能生效缩进值,仅设"yes"默认只缩进2格。

处理不规范的XML输入

如果原始字符串缺少根节点或含非法字符,DocumentBuilder.parse()会抛异常。建议先做基础校验:

ghiblitattoo ghiblitattoo

用AI创造独特的吉卜力纹身

ghiblitattoo 175 查看详情 ghiblitattoo
  • 用String.trim()去除首尾空白
  • 检查是否以
  • 包裹一层临时根标签(如...)再解析,格式化后再去掉

替代方案:使用第三方库(如jsoup或dom4j)

若项目已引入jsoup,可利用其HTML/XML解析能力快速美化:

  • jsoup.parse(xmlStr, "", Parser.xmlParser()).toString() 自动带缩进
  • dom4j的DocumentHelper.parseText(str).asXML()也支持格式化输出,但需显式配置OutputFormat.createPrettyPrint()

这类方式更简洁,但会引入额外依赖,适合已有对应库的项目。

以上就是如何用J*a代码格式化(美化)XML字符串的详细内容,更多请关注其它相关文章!

本文转自网络,如有侵权请联系客服删除。