Java输出XML文件和CDATA

时间:2012-10-11 15:28:10

标签: java xml

我遇到了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格式。

1 个答案:

答案 0 :(得分:2)

您不能 - OutputKeys.CDATA_SECTION_ELEMENTS输出属性对应cdata-section-elements的XSLT <xsl:output>属性,并且只允许您根据QName定义元素,而不是匹配表达式

但是,因为<foo>text</foo><foo><![CDATA[text]]></foo>在XML解析器方面是相同的,所以无关紧要。