相关文章推荐
唠叨的豆芽  ·  建立 XML Web 服務 - Win32 ...·  3 周前    · 
爱旅游的绿豆  ·  XML 和 SOAP 串行化 - .NET ...·  3 周前    · 
卖萌的水桶  ·  使用 XML Web 服務進行 XML ...·  3 周前    · 
率性的山楂  ·  XML 简介 - XML:可扩展标记语言 ...·  3 周前    · 
冲动的显示器  ·  XML 模式:了解命名空间·  2 周前    · 
卖萌的蚂蚁  ·  雄商高铁最新消息来了!_河南省·  1 年前    · 
才高八斗的咖啡  ·  各地非遗亮相“文化和自然遗产日”_央广网·  1 年前    · 
曾深爱过的酱肘子  ·  中华人民共和国驻胡志明市总领事馆·  1 年前    · 
幸福的番茄  ·  郑州市惠济一中举行第十四届班主任节|学校|新 ...·  1 年前    · 
儒雅的松鼠  ·  为什么说 TensorFlow ...·  1 年前    · 
Code  ›  Oracle 由于转义字符导致的XML解析错误 - 墨天轮
转义 xml解析 oracle xml语言
https://www.modb.pro/db/205433
刚毅的鼠标
2 年前
  • 学习
    • 课程中心
      推荐优质内容、热门课程
    • 学习路径
      预设学习计划、达成学习目标
    • 知识图谱
      综合了解技术体系知识点
    • 课程库
      快速筛选、搜索相关课程
    • 视频学习
      专业视频分享技术知识
    • 电子文档
      快速搜索阅览技术文档
  • 文档
  • 工具
    • SQLRUN
      在线数据库即时SQL运行平台
    • 数据库在线实训平台
      实操环境、开箱即用、一键连接
    • Oracle巡检
      简单两步,查看报告分析
    • AWR分析
      上传AWR报告,查看分析结果
    • SQL格式化
      快速格式化绝大多数SQL语句
    • SQL审核
      审核编写规范,提升执行效率
    • PLSQL解密
      解密超4000字符的PL/SQL语句
    • OraC函数
      查询Oracle C 函数的详细描述
    • Bethune X
      数据库智能监控巡检平台,90天试用
  • 暂无图片
    • 数据库
    • 云计算
    • 数据产品
    • 中间件
    • 操作系统
    • 芯片
  • 我的订单
  • 登录后可立即获得以下权益
    免费培训课程
    收藏优质文章
    疑难问题解答
    下载专业文档
    签到免费抽奖
    提升成长等级
    立即登录
    登录 注册
      • 登录 注册
    • 首页
    • 资讯
    • 数说
    • 活动
    • 大会
    • 课程
    • 文档
    • 排行
    • 问答
    • 云市场
    • 我的订单
    暂无图片
    觉得内容不错?
    一键收藏 方便随时查看
    暂无图片
    暂无图片
    微信扫码
    复制链接
    新浪微博
    分享数说
    暂无图片
    采集到收藏夹
    分享到数说
    首页 / Oracle 由于转义字符导致的XML解析错误

    Oracle 由于转义字符导致的XML解析错误

    askTom 2016-08-18
    858

    问题描述

    嗨,汤姆,

    我们有一个过程,我们尝试使用XML并将其作为CLOB存储在表中。我们得到的这些XML在XML的文本部分中具有诸如 “&” 或 “
    当我们尝试使用XMLtable解析XML时,它会引发以下错误。是否有任何方法/机制/解决方法可以克服以下错误。唯一的问题是,我们不能从源头改变数据。

    这就是我们所做的:


    create table test_xml (trd_pyload clob );
    insert into test_xml values ('
      XYZABC & ASSOC
    COMMIT;
    SELECT *
      FROM test_xml
           INNER JOIN
           XMLTABLE (
              '/ROWSET/ROW'
              PASSING XMLTYPE (TRD_PYLOAD)
              COLUMNS SHD_ID NUMBER PATH 'SHD_ID',
                      AMP_TEXT VARCHAR2 (250) PATH 'AMP_TEXT')
              ON 1 = 1;
    

    ORA-31011: XML解析失败
    ORA-19213: 第4行的XML处理中出现错误
    LPX-00242: 无效使用 & 符号 ('&') 字符 (使用 &)
    ORA-06512: 在 “SYS.XMLTYPE”,第272行
    ORA-06512: 在第1行


    有几个选择。

    您可以分别将小于和大于 & 的 “与” 转换为 &。

    或者,您可以在 标签中包装可能包含转义字符的文本。

    如果可以的话,在源数据中更改此设置最简单。但如果你不是,那还是有可能出去的。

    使用 “&” 号,您可以直接替换-前提是您知道它不用于转义字符!

    set define off
    create table test_xml (trd_pyload clob );
    insert into test_xml values ('
      XYZABC & ASSOC
    SELECT amp_text
      FROM test_xml,
           XMLTABLE (
              '/ROWSET/ROW'
              PASSING XMLTYPE (replace(TRD_PYLOAD, '&', '&'))
              COLUMNS SHD_ID NUMBER PATH 'SHD_ID',
                      AMP_TEXT VARCHAR2 (250) PATH 'AMP_TEXT');
    AMP_TEXT        
    XYZABC & ASSOC 
    


    大于和小于都比较棘手。你需要弄清楚哪些是真正的标签标记,哪些不是。将违规标签内容包装在CDATA标签中更容易。

    您可以使用regexp_replace来执行此操作。

    使用以下正则表达式查找您知道可能具有转义字符的标签:

    (。)

    和下面的替换字符串:



    \ 1是对标记之间匹配的文本的回引用。

    综合起来就是:

    DELETE test_xml;
    insert into test_xml values ('
      XYZABC & 
    COMMIT;
    SELECT amp_text
      FROM test_xml,
           XMLTABLE (
              '/ROWSET/ROW'
              PASSING XMLTYPE (
                regexp_replace(TRD_PYLOAD, 
                  ' (。)',
              COLUMNS SHD_ID NUMBER PATH 'SHD_ID',
                      AMP_TEXT VARCHAR2 (250) PATH 'AMP_TEXT');
    
     
    推荐文章
    唠叨的豆芽  ·  建立 XML Web 服務 - Win32 apps | Microsoft Learn
    3 周前
    爱旅游的绿豆  ·  XML 和 SOAP 串行化 - .NET | Microsoft Learn
    3 周前
    卖萌的水桶  ·  使用 XML Web 服務進行 XML 串行化 - .NET | Microsoft Learn
    3 周前
    率性的山楂  ·  XML 简介 - XML:可扩展标记语言 | MDN
    3 周前
    冲动的显示器  ·  XML 模式:了解命名空间
    2 周前
    卖萌的蚂蚁  ·  雄商高铁最新消息来了!_河南省
    1 年前
    才高八斗的咖啡  ·  各地非遗亮相“文化和自然遗产日”_央广网
    1 年前
    曾深爱过的酱肘子  ·  中华人民共和国驻胡志明市总领事馆
    1 年前
    幸福的番茄  ·  郑州市惠济一中举行第十四届班主任节|学校|新学期|区教育局_网易订阅
    1 年前
    儒雅的松鼠  ·  为什么说 TensorFlow 是适用于部署生产的机器学习框架? - 知乎
    1 年前
    今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
    删除内容请联系邮箱 2879853325@qq.com
    Code - 代码工具平台
    © 2024 ~ 沪ICP备11025650号