我正在创建一个XML文档。我使用以下代码使其缩进:
TransformerFactory.setAttribute("indent-number", new Integer(2));
Transformer.setOutputProperty(OutputKeys.INDENT, "yes");
是否有可能让Java使用制表符而不是空格进行缩进?如何实现?
我正在创建一个XML文档。我使用以下代码使其缩进:
TransformerFactory.setAttribute("indent-number", new Integer(2));
Transformer.setOutputProperty(OutputKeys.INDENT, "yes");
是否有可能让Java使用制表符而不是空格进行缩进?如何实现?
不,总的来说不行。XSLT规范不允许指定缩进时使用什么空格。
但是,配置这个可能是与XSLT处理器特定相关的项目。请检查您正在使用的处理器的文档。
如果您真的想要这个功能,那么可以在输出上使用一个后置的XSLT脚本,在text()节点上执行任何您想要执行的操作。
是的,有些人认为制表符是邪恶的。但是,如果您想使用TransformFactory
并希望更改缩进行为以使用制表符而不是空格,则需要提供自己的ContentHandler
实现。然后将您的ContentHandler实现传递到新的SAXResult
中 - 将其作为“结果”传递给Transformer.transform(...)
。需要跳过很多障碍。
另一个考虑因素可能是在输出上使用智能XSLT。
我认为不需要这样做。
你可以获取结果并处理它,替换调用str.replace("\n ", "\n\t")
(或任何你想要的空格数)。
但我建议不要这样做 - 制表符不是跨平台的。
str.replace
函数可能存在危险,因为它有可能会将一些属性值中的空格替换为制表符等其他字符,这样做是非常不希望看到的。 - ring bearer