2015-06-24 61 views
0

Oracle中是否有一个函数/过程从varchar2中删除无效的XML字符?删除XML中的无效字符

我需要这个,因为我想从数据库中生成一个XML,并且一些varchar2数据有无效的控制字符(见下文),我需要删除。

我担心的代码控制字符以下U+0020

U+0009, U+000A, U+000D: these are the only C0 controls accepted in XML 1.0;

我检查DBMS_XMLGEN,并没有发现什么合适。

有什么或我必须自己编程吗?

+0

做替换非法XML字符? –

+0

@AlexPoole删除。 – Roland

回答

1

我假设你的数据库字符代码是UTF8,从数据库的角度来看,这些字符是有效的。 然后,你可以简单地将它们替换为空白或NULL来摆脱它们。

例如

replace(str,UNISTR('\000D'),null) 
+0

是的,我可以替换所有的控制字符,但我希望Oracle提供了这样的预编译功能,例如'DBMS_XMLGEN.Remove_invalid_characters()' – Roland

0

尝试 select DBMS_XMLGEN.CONVERT(UNISTR('\000D')) from dual

+0

'选择DBMS_XMLGEN.CONVERT(UNISTR('\ 000D'))为null的情况,然后'null'else'not null'从双重结束;'returns'not null' – Roland

0

此功能将被相应的替换值要删除它们或它们编码dbms_xmlgen.convert()