我正在用一個表格中的數據填充一個簡短的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字符,只有控制字符。 –