2014-12-25 67 views
2

WSO2 4.8.1在將XML消息傳遞給CDATA部分時存在一個衆所周知的問題。這些部分總是以XML轉義字符串的形式替換其內容。在WSO2中傳遞CDATA

任何解決這個問題的方法將不勝感激。

同時,我發現了一個頁面講述一些補丁(patch0514)用於此目的:
http://www.yenlo.com/en/how-to-preserve-a-cdata-in-xml-that-is-circulating-in-a-wso2-enterprise-service-bus/

但我不知道我在哪裏可以得到這個補丁。任何線索?

回答

1

所以,最後我找到了2個問題有:

  1. SOAP生成器,不會保留CDATA的配置。

我不得不從公理包改變org.apache.axiom.om.OMXMLBuilderFactory,使用StAXParserConfiguration.PRESERVE_CDATA_SECTIONS代替StAXParserConfiguration.SOAP它來作,如下所示:

public static OMXMLParserWrapper createSOAPModelBuilder(InputStream in, String encoding){ 
    InputSource is = new InputSource(in); 
    is.setEncoding(encoding); 
    return OMAbstractFactory.getMetaFactory().createSOAPModelBuilder(StAXParserConfiguration.PRESERVE_CDATA_SECTIONS, is); 
} 
  • XSLT介體不正確的行爲。即使您已經在信封內正確定義了CDATA節點,這些節點在傳遞XSLT中介後也會轉換爲轉義字符串。事實上,我沒有XSLT的解決方案,因爲我們現在選擇避免使用它,因爲它有許多問題。