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