我遇到了javax.xml.transform.Transformer类及其setOutputProperty方法的问题。我正在尝试获取XML输出。
<name>
<text>XXXXXXXXXX</text>
</name>
<questiontext format="html">
<text><![CDATA[YYYYYYYYYYY]]></text>
</questiontext>
但是使用以下方法:
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "text");
造成两个文本节点被CDATA标记嵌入的原因如下:
<name>
<text><![CDATA[XXXXXXXXXX]]></text>
</name>
<questiontext format="html">
<text><![CDATA[YYYYYYYYYYY]]></text>
</questiontext>
所以我猜我需要一种指定文本元素父级的方法,但我还没有找到一种方法来实现这个目标,而且javadocs没有说明使用哪种符号。同时我也无法改变输出XML格式。
<foo>text</foo>
和<foo><![CDATA[text]]></foo>
完全不同。考虑到“text”包含XML字符,例如“t<>/./?><<<>M”,在这种情况下,将其包装成CDATA将是您唯一的选择,并且对于XML解析器来说肯定很重要。 - mvdssel