2015-06-24 88 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()