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