我遇到了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格式。
答案 0 :(得分:2)
您不能 - OutputKeys.CDATA_SECTION_ELEMENTS
输出属性对应cdata-section-elements
的XSLT <xsl:output>
属性,并且只允许您根据QName定义元素,而不是匹配表达式
但是,因为<foo>text</foo>
和<foo><![CDATA[text]]></foo>
在XML解析器方面是相同的,所以无关紧要。