Java Transformer如何将xml结构保留在CDATA中

时间:2016-04-29 14:48:07

标签: java xml cdata removing-whitespace transformer

当我尝试使用 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);
...

0 个答案:

没有答案