0
我正在构建XML文档并使用JVM内置库打印出缩进格式。当有一个包含换行符的文档中的文本节点,它包装线到线,而不是它的开始真实正确的缩进位置Java:XML转换,文本节点中的换行符打破缩进
示例代码
ByteArrayOutputStream s;
s = new ByteArrayOutputStream();
Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
Transformer t = TransformerFactory.newInstance().newTransformer();
Element a;
Text b;
a = d.createElement("a");
String text = "multi\nline\ntext";
b = d.createTextNode(text);
a.appendChild(b);
d.appendChild(a);
t.setOutputProperty(OutputKeys.INDENT,"yes");
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
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>multi
line
text</a>
所需的输出
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<a>
multi
line
text
</a>
有使每个新行一个聪明的办法从缩进的xml标签开始的地方开始?有些东西告诉我textnode不适合使用?有什么更好的吗?
你是对的,我可能需要使用类似cdata这样的 – Mike 2009-09-06 09:04:50
或使用 编码,允许它被放在一行。无论如何,你的textnode不能很好地打印而不改变内容。 – 2009-09-06 10:21:53