【问题标题】:indent XML text with Transformer使用 Transformer 缩进 XML 文本
【发布时间】:2009-07-04 20:03:45
【问题描述】:

我正在使用以下代码编写一个 XML 文件:

Source source = new DOMSource(rootElement);
Result result = new StreamResult(xmlFile);
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.transform(source, result);

这是输出文件:

<?xml version="1.0" encoding="UTF-8"?>
<feature-sequences>
<sequence>
<initial-frame>0</initial-frame>
<points>
<point>
<x>274.0</x>
<y>316.0</y>
</point>
...

我想让这个文件缩进,例如:

<?xml version="1.0" encoding="UTF-8"?>
<feature-sequences>
  <sequence>
    <initial-frame>0</initial-frame>
    <points>
      <point>
        <x>274.0</x>
        <y>316.0</y>
      </point>
...

在我的代码中调用setOutputProperty 并不能解决问题,它实际上使文本带有新行(但没有缩进)。

任何人都可以解决这个问题,而不需要外部库?

【问题讨论】:

    标签: java xml formatting indentation


    【解决方案1】:

    您可能还需要指定缩进的空格数量:

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

    【讨论】:

    • 非常感谢,这正是我想要的!但是我觉得这个属性名很奇怪。
    • 很高兴它成功了!我知道它的唯一原因是因为我自己被这个咬了。 Java 中与 XML 相关的 API 通常很糟糕。
    猜你喜欢
    • 1970-01-01
    • 2011-08-10
    • 2010-11-25
    • 2021-01-02
    • 1970-01-01
    • 2013-01-22
    相关资源
    最近更新 更多