[当我尝试使用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);
...
有同样的问题。似乎是Windows问题,该解决方案为我工作:https://stackoverflow.com/a/57887883/2285846