首页 > 解决方案 > 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>
.
.

标签: xmlapache-poitransformer

解决方案


您需要告诉变压器缩进有多大:

transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

推荐阅读