我目前正在使用以下代码来缩进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/

10-09 15:46