我正在使用填充表中数据的简短PL / SQL函数创建一个简单的
XML 1.0文件.
表格中的数据还包含HTML字符,例如
对于这些特殊字符,我构建了一个简短的搜索和替换函数,如下所示:
newXmlString := REPLACE(xmlString, '&', '&' );
newXmlString := REPLACE(newXmlString, '\', '' );
newXmlString := REPLACE(newXmlString, '
newXmlString := REPLACE(newXmlString, '>', '>' );
newXmlString := REPLACE(newXmlString, '"', '"' );
newXmlString := REPLACE(newXmlString, '''', ''' );
> ETX(文字结束)
> SYN(同步空闲)
注意:并非每个控制字符都会破坏XML文件的验证!仍然可以进行换行或回车.
当然我现在也可以搜索和替换它们,例如:
newXmlString := REPLACE(newXmlString, chr(3), '' ); -- ETX end of text
但是,是否有一个内置函数或类似于我可以与PL / SQL一起使用而不用列表和搜索替换它们的库?
更新1
我也尝试使用函数dbms_xmlgen.getxml但是这个函数抛出一个错误,因为’转义char转换失败的特殊字符’.
更新2
我尝试使用REGEXP_REPLACE(STRING_VALUE,'[[:cntrl:]]’),但这也会删除我们想要保留的换行符,也不会影响XML文件的验证.