2016-07-29 44 views
0

當我試圖從我的請求中刪除CDATA時,我遇到了一個有線問題。它在我的本地IDE中正常工作,但在DataPower中不起作用。要求是它應該刪除CDATA標籤,如果它在XML中找到一個,否則它不應該做任何事情。 輸入XML:在DataPower中從XML中刪除CDATA

<response status="200"> 
    <CustomELearningVO> 
     <ClassListVO> 
      <![CDATA[ 
<CLASS_TAB_OBJ> 
<CLASS_TAB> 
<CLASS_OBJ> 
<ClassId>123456</ClassId> 
<ClassName>Sample Class1</ClassName> 
<Status>Not Attempted</Status> 
<Link>link</Link> 
<PlayEnable>Y</PlayEnable> 
</CLASS_OBJ> 

<CLASS_OBJ> 
<ClassId>56789</ClassId> 
<ClassName>Sample Class2</ClassName> 
<Status>Failed</Status> 
<Link>link2</Link><PlayEnable>Y</PlayEnable> 
</CLASS_OBJ> 

<CLASS_OBJ> 
<ClassId>56788</ClassId> 
<ClassName>Sample Class3</ClassName> 
<Status>Failed</Status> 
<PlayEnable>N</PlayEnable> 
<PlayMessage>"Course cannot be played as Certfication subscribed to Course has Expired"</PlayMessage> 
</CLASS_OBJ> 

</CLASS_TAB> 
</CLASS_TAB_OBJ> 
]]> 

     </ClassListVO> 
     <eBSErrorCode>0</eBSErrorCode> 
     <eBSErrorMessage>SUCCESS</eBSErrorMessage> 
    </CustomELearningVO> 
</response> 

XSL我使用刪除CDATA:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output indent="yes" /> 

<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 


<xsl:template match="text()"> 

    <xsl:value-of select="." disable-output-escaping="yes" /> 
</xsl:template> 

</xsl:stylesheet> 
+0

你有沒有嘗試過其他樣式表?做他們的工作 ?可能是這裏的選項之一https://stackoverflow.com/questions/3708055/extract-cdata-using-xslt? –

+0

我也試過這個,但是到目前爲止還沒有運氣:( – Sammy

+0

這很有可能你的處理器不支持'disable-output-escaping' - 不需要XSLT規範這麼做 –

回答

0

的問題是使用其對XML串行化的數據一起使用的樣式解決。