2012-10-11 41 views
3

我遇到了javax.xml.transform.Transformer類及其setOutputProperty方法的問題。我試圖讓一個XML輸出Java輸出XML文件和CDATA

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

回答

2

您不能 - OutputKeys.CDATA_SECTION_ELEMENTS輸出屬性對應於<xsl:output>的XSLT cdata-section-elements屬性,並且只允許您根據QNames定義元素,而不匹配表達式。

但是它應該沒關係,因爲<foo>text</foo><foo><![CDATA[text]]></foo>就XML解析器而言是相同的。

+0

感謝您的回覆。我不知道稍後會在XML中使用什麼解析器,但是我希望這個額外的CDATA不會引起任何它不應該出現的問題。我甚至試圖傳遞一個包含CDATA標籤的字符串,但之後Transformer在解析「<" and ">」字符時出現問題。 – maxPayne