Java:如何缩进由Transformer生成的XML [英] Java: How to Indent XML Generated by Transformer
本文介绍了Java:如何缩进由Transformer生成的XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用Java的内置XML转换器来获取DOM文档并打印出生成的XML。问题是尽管明确设置了参数indent,但它根本没有缩进文本。
I'm using Java's built in XML transformer to take a DOM document and print out the resulting XML. The problem is that it isn't indenting the text at all despite having set the parameter "indent" explicitly.
示例代码
public class TestXML {
public static void main(String args[]) throws Exception {
ByteArrayOutputStream s;
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Transformer t = TransformerFactory.newInstance().newTransformer();
Element a,b;
a = d.createElement("a");
b = d.createElement("b");
a.appendChild(b);
d.appendChild(a);
t.setParameter(OutputKeys.INDENT, "yes");
s = new ByteArrayOutputStream();
t.transform(new DOMSource(d),new StreamResult(s));
System.out.println(new String(s.toByteArray()));
}
}
结果
<?xml version="1.0" encoding="UTF-8" standalone="no"?><a><b/></a>
期望的结果
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>
<b/>
</a>
想法?
推荐答案
您需要启用'INDENT'并设置变压器的缩进金额:
You need to enable 'INDENT' and set the indent amount for the transformer:
t.setOutputProperty(OutputKeys.INDENT, "yes");
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
更新:
(非常感谢所有成员,特别是@ marc-novakowski,@ james-murty和@saad):
这篇关于Java:如何缩进由Transformer生成的XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文