我对 Oracle 的 XDB 完全陌生,特别是使用它从数据库表生成 XML 输出,并且正在开发一个从 9i(Oracle9i 企业版版本 9.2.0.5.0 - 生产)迁移到 11g(Oracle)的应用程序Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production)。这是一个小测试用例,说明了我遇到的问题:
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 生成脚本进行简单的更改,还是我需要进行其他类型的清理?或者只是在极少数情况下手动解决问题(这对于我的需求来说是一个完全合理的选择)。