我正在用一个表格中的数据填充一个简短的PL/SQL函数的帮助下创建一个简单的XML 1.0文件。PL/SQL转换特殊字符
表中的数据还包含HTML字符,如<>,&等。 对于这些特殊字符我已经建立一个短期的搜索和替换功能,看起来像这样:
newXmlString := REPLACE(xmlString, '&', '&');
newXmlString := REPLACE(newXmlString, '\', '');
newXmlString := REPLACE(newXmlString, '<', '<');
newXmlString := REPLACE(newXmlString, '>', '>');
newXmlString := REPLACE(newXmlString, '"', '"');
newXmlString := REPLACE(newXmlString, '''', ''');
现在有在这具有XML文件是不能够因为要验证的效果表的详细数据特殊的控制字符(https://en.wikipedia.org/wiki/Control_character)像:
- 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文件也没有影响。
我想'dbms_xmlgen.convert()'是你在找什么 –
@a_horse_with_no_name:这将转换成HTML字符,但也没有控制字符,如“SYN” – frgtv10
但使用的是你并不需要照顾所有的HTML字符,只有控制字符。 –