Java 变压器 setOutputProperty()

Java Transformer setOutputProperty()

我目前正在使用以下代码缩进 XML:

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

这很好地缩进了代码,但是,我不确定 http://xml.apache.org/xslt}indent-amount" 在做什么。 URL 对于缩进是必不可少的。有人可以解释一下这个 URL 的作用以及它是如何工作的吗?

谢谢! :)

您正在覆盖 org.apache.xml.serializer 包中定义的默认值 属性 indent-amount。这会启用缩进(因为默认值为 0)。

Output properties for XML, HTML, and text transformation output are defined in property files in the org.apache.xml.serializer package.

You can override the default value of these properties in your stylesheet by using the attributes of an xsl:output element. You can override the Xalan specific default settings as follows:

Declare the xalan namespace in your stylesheet element (xmlns:xalan="http://xml.apache.org/xalan").

Use the namespace prefix you assign (for example, "xalan") to redefine properties of interest in the stylesheet xsl:output element (for example, xalan:indent-amount="5"). The following stylesheet fragment declares the xalan namespace and sets indent-amount to 2:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" 
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xalan="http://xml.apache.org/xalan">

  <xsl:output method="xml" 
              encoding="UTF-8"
              indent="yes" 
              xalan:indent-amount="2"/>

您可以在 http://xml.apache.org/xalan-j/usagepatterns.html Configuring serialization output properties 章节下找到更多信息。

所有这些假设您的序列化器是特定于 xalan 的