当我尝试使用 javax.xml.transform.Transformer 转换文档时,API会在CDATASection内的标记之间插入一些空格。
不知道为什么,我已经将输出属性 INDENT 用作“no”。
我想要这个:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<infoDoc>
<xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<el1>
<Header>
<Success>false</Success>
</Header>
<Detail>
<Key>
<Number>4721</Number>
</Key>
</Detail>
</el1>]]></xml1>
</infoDoc>
</root>
或者这个:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<infoDoc>
<xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?><el1><Header><Success>false</Success></Header><Detail><Key><Number>4721</Number></Key></Detail></el1>]]></xml1>
</infoDoc>
</root>
但我收到了这个:
<?xml version="1.0" encoding="UTF-8"?><root><infoDoc><xml1><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<el1>
<Header>
<Success>false</Success>
</Header>
<Detail>
<Key>
<Number>4721</Number>
</Key>
</Detail>
</el1>]]></xml1></infoDoc></root>
是否有其他财产可以做到这一点?
或其他API,可以做得对吗?
修改 我正在使用如下:
...
final Element xml1 = doc.createElement("xml1");
final CDATASection xml1Content = doc.createCDATASection(new String(bytes, Charset.forName(encoding)));
xml1.appendChild(xml1Content);
infoDoc.appendChild(xml1);
...
...
final DOMSource source = new DOMSource(document);
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
transformer.setOutputProperty(OutputKeys.ENCODING, encoding);
transformer.setOutputProperty(OutputKeys.INDENT, "no");
transformer.transform(source, result);
...