XML 和HTML中的转移字符:
HTML中<, >,&等有特殊含义,(前两个字符用于链接签,&用于转义),不能直接使用。使用这三个字符时,应使用它们的转义序列,如下所示:
& 或 & | & | 和 | |||
< 或 < | < | 小于号 | |||
> 或 > | > | 大于号 | |||
" | " | 双引号 |
| ||
|
| 空格 | |||
© | © | 版权符 | |||
® | ® | 注册符 | |||
|
|
|
|
|
|
前者为字符转义序列,后者为数字转义序列。数字转为字符对应的ASCII码值。例如 & lt; font >显示为,<font>,若直接写为则被认为是一个链接签。
需要说明的是:
a. 转义序列各字符间不能有空格;
b. 转义序列必须以";"结束;
c. 单独的&不被认为是转义开始;
d.区分大小写。
另一个需要转义的字符是引号,它的转义序列为"" "或"""
HTML使用的字符集是ISO &859 Larin-1字符集,该字符集中有许多标准键盘上无法输入的字符。对这些特殊字符只能使用转义序列。
XML转义字符
不合法的XML字符必须被替换为相应的实体。
如果在XML文档中使用类似"<" 的字符, 那么解析器将会出现错误,因为解析器会认为这是一个新元素的开始。所以不应该像下面那样书写代码:
<message>if salary < 1000 then</message>
为了避免出现这种情况,必须将字符"<" 转换成实体,像下面这样:
<message>if salary < 1000 then</message>
下面是五个在XML文档中预定义好的实体:
< | < | 小于号 |
> | > | 大于号 |
& | & | 和 |
' | ' | 单引号 |
" | " | 双引号 |
实体必须以符号"&"开头,以符号";"结尾。
注意: 只有"<" 字符和"&"字符对于XML来说是严格禁止使用的。剩下的都是合法的,为了减少出错,使用实体是一个好习惯。
所以增加进行字符的替换
function get_xml_str_f(p_str in varchar2) return varchar2 is
v_tmp varchar2(500);
begin
-- 去除xml中的特殊字符
v_tmp := replace(p_str, '&', '&');
v_tmp := replace(v_tmp, '<', '<');
v_tmp := replace(v_tmp, '>', '>');
v_tmp := replace(v_tmp, '"', '"');
v_tmp := replace(v_tmp, '''', ''');
v_tmp := replace(v_tmp, '©', '©');
v_tmp := replace(v_tmp, '®', '®');
return v_tmp;
end;