zoukankan      html  css  js  c++  java
  • XML转义--SQL函数

    XML BI Publisher 做发票,

    物料型号中有 XML 关键字符,因此需要转义

    -------------------------------------------------------
    -- PLSQL 
    -- 傳入字串,將特殊符號轉成符合XML格式
    -------------------------------------------------------
      FUNCTION REPLACE_FOR_XML(P_STR IN  VARCHAR2) RETURN VARCHAR2 is
        v_str     varchar2(2000);
      BEGIN
         -- 單引號
        select replace(P_STR,chr(39),chr(38)||'apos;')
          into v_str
          from dual;
    
       --  2019/6/6  雙引號
       select replace(v_str,CHR(34),chr(38)||'quot;')
          into v_str
          from dual;
    
         -- & 連接符
        select replace(v_str,chr(38),chr(38)||'amp;')
          into v_str
          from dual;
    
          -- 小於號
        select replace(v_str,'<',chr(38)||'lt;')
          into v_str
          from dual;
          -- 大於號
        select replace(v_str,'>',chr(38)||'gt;')
          into v_str
          from dual;
          
        RETURN (v_str);
      END;  

    实际还是不能展出目标结果。因为 单引号及双引号转义后 字符串 分别是 “&apos;” 和 “&quot;”, 在第三个转义,则将“&”连接符再次转义为

    "&amp;"

    故 必须 要将 “&”连接字符的转义放在第一个位置。

    正确顺序如下代码:

    -------------------------------------------------------
    -- 傳入字串,將特殊符號轉成符合XML格式
    -------------------------------------------------------
      FUNCTION REPLACE_FOR_XML(P_STR IN  VARCHAR2) RETURN VARCHAR2 is
        v_str     varchar2(2000);
      BEGIN
         -- & 連接符
        select replace(P_STR,chr(38),chr(38)||'amp;')
          into v_str
          from dual;
              
         -- 單引號
        select replace(v_str,chr(39),chr(38)||'apos;')
          into v_str
          from dual;
    
       --   雙引號
       select replace(v_str,CHR(34),chr(38)||'quot;')
          into v_str
          from dual;
    
          -- 小於號
        select replace(v_str,'<',chr(38)||'lt;')
          into v_str
          from dual;
          -- 大於號
        select replace(v_str,'>',chr(38)||'gt;')
          into v_str
          from dual;
          
        RETURN (v_str);
      END;  
    优质生活从拆开始
  • 相关阅读:
    教你如何把切割好的html页面转换成可供DIY的页面
    [二次开发][Discuz!X] Discuz!二次开发基本知识
    discuz之C::t 方法
    header_userstatus.htm文件注释
    【discuzx2】header.htm模板文件深入分析
    discuz的页头header和页尾footer文件必要代码
    discuz全局数组变量 后台各项设置 完整版
    交换机到底有没有MAC地址?
    妙味课堂—JavaScript基础课程笔记
    jquery 绘图工具 flot 学习笔记
  • 原文地址:https://www.cnblogs.com/samrv/p/10996294.html
Copyright © 2011-2022 走看看