xml - transformer.setOutputProperty() 没有生效 - java 8
问题描述
我正在使用 poi 库使用转换器编写 xml 文件,并且我有这些属性:
爪哇 1.8
//for output to file, console
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
//for pretty print
transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes"); //TODO
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
但是结果显示为standalone="no" 并且没有间距/缩进!!!
结果:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<MainStruct>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<Table>
<IntVar1 value="1"/>
<StringVar1 value="String1"/>
<IntVar2 value="2"/>
<StringVar2 value="S"/>
</Table>
.
.
预期的:
<?xml version = '1.0' encoding = 'UTF-8' standalone = 'yes'?>
<MainStruct>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<StringArray1 value="H1"/>
<Table>
<IntVar1 value="1"/>
<StringVar1 value="String1"/>
<IntVar2 value="2"/>
<StringVar2 value="S"/>
</Table>
.
.
解决方案
您需要告诉变压器缩进有多大:
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
推荐阅读
- javascript - 根据 Jquery DataTables 中的预制列表选择行
- javascript - Angular:来自未定义子项的数据
- r - 使用 qwraps2 summary_table 函数获取“错误:`x` 必须是公式”
- json - WSO2 API 管理器工具:无法将 JSONtoSOAP 和 SOAPtoJSON 转换为模拟后端和 API 之间的通信
- php - 在 Windows PHP exec() 上运行(生成 PDF)soffice LibreOffice 不起作用
- javascript - 需要根据表单输入生成文件并下载(FormIO)
- cypress - 在 Cypress 中配置屏幕截图文件夹
- javascript - 是否可以使用现有的 AWSCognitoAuthUserSession 初始化 AWSCognitoCredentialsProvider?
- jquery - 如何以编程方式选择 jQuery 滑块?
- javascript - 什么函数调用 bootstrap4 中的“navbar-toogle”按钮?