我目前正在使用以下代码来缩进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的作用及其工作原理吗?谢谢! :)
最佳答案
您将覆盖indent-amount
包中定义的默认属性org.apache.xml.serializer
。这将启用缩进(因为默认值为0)。
XML,HTML和文本转换输出的输出属性在org.apache.xml.serializer中的属性文件中定义
包。
您可以在自己的代码中覆盖这些属性的默认值
样式表,方法是使用xsl:output元素的属性。您可以
覆盖特定于Xalan的默认设置,如下所示:
在样式表元素中声明xalan命名空间
(xmlns:xalan =“ http://xml.apache.org/xalan”)。
使用您分配的名称空间前缀(例如“ xalan”)重新定义
样式表xsl:output元素中感兴趣的属性(用于
例如xalan:indent-amount =“ 5”)。以下样式表片段
声明xalan命名空间并将indent-amount设置为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"/>
您可以在
Configuring serialization output properties
章的http://xml.apache.org/xalan-j/usagepatterns.html中找到更多信息。所有这些假设您的序列化器是xalan特定的
关于java - Java变压器setOutputProperty(),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50275655/