gpt4 book ai didi

xml - 转义 Oracle XDB 中的控制字符

转载 作者:数据小太阳 更新时间:2023-10-29 02:49:17 26 4
gpt4 key购买 nike

我对 Oracle 的 XDB 完全陌生,特别是使用它从数据库表生成 XML 输出,并且正在开发一个从 9i(Oracle9i 企业版 9.2.0.5.0 - 生产版)迁移到11g(Oracle 数据库 11g 企业版发布 11.2.0.2.0 - 64 位生产)。这是一个小测试用例,它说明了我遇到的问题:

select xmlelement("test", test) from (select 'a' test from dual);

这有效并给我:

<test>a</test>

但是在 11g 中,如果我将 'a' 换成无效字符,例如 U+0013,我会收到以下错误:

ORA-31061: XDB error: special char to escaped char conversion failed.

在 9i 下,同样的事情可以成功运行,没有错误。

显然,理想的答案是进行一些验证,以防止控制字符进入我试图转换为 XML 的简单字符数据,但不幸的是,这超出了我的工作范围。

这是其他任何人都经历过的吗?如果是,我是否可以对我的 XML 生成脚本进行简单的更改,或者我是否需要进行其他类型的清理?或者只是在极少数情况下手动修复问题(这对于我的需求来说是一个非常合理的选择)。

最佳答案

虽然始终在源头修复数据是最好的解决方案,但我也发现这在我无法从源头控制数据的情况下很有用:

select xmlelement("test", test) 
from (select regexp_replace(unistr('a\0013b'), '[[:cntrl:]]', '') test from dual);

重要的部分是 regexp_replace(your_field, '[[:cntrl::]]', '') 从数据中删除控制字符。

关于xml - 转义 Oracle XDB 中的控制字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com