I am having a problem with the javax.xml.transform.Transformer class and its setOutputProperty method. I’m trying to get a XML output
<name>
<text>XXXXXXXXXX</text>
</name>
<questiontext format="html">
<text><![CDATA[YYYYYYYYYYY]]></text>
</questiontext>
But using the:
Transformer trans = transfac.newTransformer();
trans.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "text");
causes for the both of text nodes to be embedded by CDATA tags like so:
<name>
<text><![CDATA[XXXXXXXXXX]]></text>
</name>
<questiontext format="html">
<text><![CDATA[YYYYYYYYYYY]]></text>
</questiontext>
So i guess i need a way to specify the parent of the text element but i haven’t found a way to do so and the javadocs don’t specify which notation is used. Also i am not in a position to change the output XML format.
You can’t – the
OutputKeys.CDATA_SECTION_ELEMENTSoutput property corresponds to the XSLTcdata-section-elementsattribute of<xsl:output>, and that only allows you to define the elements in terms of QNames, not match expressions.But it shouldn’t matter since
<foo>text</foo>and<foo><![CDATA[text]]></foo>are identical as far as an XML parser is concerned.