【问题标题】:transformer.setOutputProperty() is not taking effect - java 8transformer.setOutputProperty() 没有生效 - java 8
【发布时间】:2019-10-30 09:11:43
【问题描述】:

我正在使用 poi 库使用转换器编写 xml 文件,并且我有这些属性:

java 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>
.
.

【问题讨论】:

标签: xml apache-poi transformer


【解决方案1】:

你需要告诉转换器缩进有多大:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-03
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-21
    • 2019-09-26
    相关资源
    最近更新 更多