在WSO2中传递CDATA

时间:2014-12-25 12:47:19

标签: xml wso2 wso2esb cdata

WSO2 4.8.1在XML消息中传递CDATA部分存在一个众所周知的问题。这些部分总是以XML转义字符串的形式替换为其内容。

对此问题的任何解决方案都将不胜感激。

与此同时,为了这个目的,我找到了一个告诉一些补丁(patch0514)的页面:
http://www.yenlo.com/en/how-to-preserve-a-cdata-in-xml-that-is-circulating-in-a-wso2-enterprise-service-bus/

但我不知道在哪里可以得到这个补丁。任何线索?

1 个答案:

答案 0 :(得分:1)

所以,最后我发现了2个问题:

  1. SOAP Builder的配置,不保留CDATA。
  2. 我必须从Axiom软件包更改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);
    }
    
    1. XSLT介体的行为不正确。即使您在信封中正确定义了CDATA节点,这些节点也会在传递XSLT介体后转换为转义字符串。事实上我没有XSLT的解决方案,我现在的选择是避免使用它,因为它有很多问题。