首页 > Java > java教程 > 如何使用 JAXP 和 DOM 在 Java 中格式化未格式化的 XML 字符串?

如何使用 JAXP 和 DOM 在 Java 中格式化未格式化的 XML 字符串?

DDD
发布: 2024-12-18 01:11:17
原创
504 人浏览过

How to Format an Unformatted XML String in Java Using JAXP and DOM?

在 Java 中格式化 XML 字符串

作为 Java 开发人员,您可能会遇到这样的情况:XML 字符串没有换行符或缩进,需要将其转换为格式良好的字符串。这对于调试目的或以可读方式呈现 XML 数据特别有用。

要完成此任务,您可以利用 Java API for XML 处理 (JAXP) 和文档对象模型 (DOM) 来转换XML 字符串转换为格式化表示。

首先,从 TransformerFactory 创建一个新的 Transformer 对象。将“INDENT”和“{http://xml.apache.org/xslt}indent-amount”属性分别设置为“yes”和“2”,以启用换行和缩进:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
登录后复制

接下来,将XML字符串转换为DOMSource对象:

String inputXml = "<tag><nested>hello</nested></tag>";
DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(inputXml))));
登录后复制

然后,创建一个StreamResult对象来保存格式化的XML string:

StreamResult result = new StreamResult(new StringWriter());
登录后复制

最后,使用转换器将源 DOM 转换为格式化的 XML 字符串:

transformer.transform(source, result);
登录后复制

result.getWriter() 对象将包含格式化的 XML字符串:

String formattedXml = result.getWriter().toString();
登录后复制

示例:

String unformattedXml = "hello";
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(new StringReader(unformattedXml))));

StreamResult result = new StreamResult(new StringWriter());
transformer.transform(source, result);
System.out.println(result.getWriter().toString());
登录后复制

输出:

<?xml version="1.0" encoding="UTF-8"?>
<tag>
  <nested>hello</nested>
</tag>
登录后复制

以上是如何使用 JAXP 和 DOM 在 Java 中格式化未格式化的 XML 字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板