3

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 格式。

4

1 回答 1

2

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

但这并不重要,因为就 XML 解析器而言<foo>text</foo><foo><![CDATA[text]]></foo>它们是相同的。

于 2012-10-11T16:37:09.630 回答