如何使用SQLXMLSerialize函数添加XMLCDATA节?

qfe3c7zg  于 2021-07-26  发布在  Java
关注(0)|答案(0)|浏览(162)

对于对第三方api的调用,我需要准备一些xml内容,以便在http主体内容中使用。
为此,xml是由rpg ile程序中的xmlserialize sql函数生成的。除了管理内部带有&symbol的字段外,一切都正常:在本例中,第三方api拒绝对无效xml内容的请求,即使sql进行了转换 & 进入 & 它自己。
sql语句如下所示:

exec sql
select xmlserialize(                                                 
xmldocument(                                                         
  xmlelement(                                                        
   name "Info",                                                      
   xmlconcat(                                                        
    xmlelement(name "SedeGls"                      , :xmlGlsCodSede),
    xmlelement(name "CodiceClienteGls"             , :xmlGlsCodCli ),
    xmlelement(name "PasswordClienteGls"           , :xmlGlsPassCli),
    xmlagg(                                     
     xmlelement(                                                     
      name "Parcel",                                                 
      xmlconcat(                                                     
       xmlelement(name "CodiceContrattoGls"  , :xmlGlsCodCon       ),
       xmlelement(name "RagioneSociale"      , trim(:bor_ORAGDE)  ), 
       ...other elements here...
    )                                     
   )                                 
  )                                  
 ) as clob(1M)                       
)                                    
into :xmlData                        
from TAB_COLLI coc;

现在,数据库字段bor\u oragde可能包含无效的xml字符,如 & ,但我不想用数据库中的其他字符替换这些字符。我宁愿使用cdata节来保存此数据库值,以便得到如下结果:

<RagioneSociale><![CDATA[my personal content & content]]></RagioneSociale>

尽管做了很多努力和尝试,但我还没有找到任何解决办法。简单串联 <![CDATA 以及 trim(:bor_ORAGDE) 以及 ]]> 不起作用,因为开始<和结束>符号被转换为相应的实体 &lt; 以及 &gt; ,所以忽略了部分。
另外,在“as clob(1m)”之后向结果变量添加ccdid(1208)也不起作用,也不能使用xmltext Package 内容。
我不敢相信ibm错过了这种可能性,所以我想我还没有在红皮书中找到答案,或者我错过了一些东西。
这有什么意义吗?
谢谢您

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题