私は Oracle の XDB、特にそれを使用してデータベース テーブルから XML 出力を生成するのはまったく初めてで、9i (Oracle9i Enterprise Edition Release 9.2.0.5.0 - Production) から 11g (Oracle) に移行するアプリケーションに取り組んでいます。データベース 11g Enterprise Edition リリース 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 生成スクリプトに加えることができる簡単な変更はありますか、それとも他の種類のクレンジングを行う必要がありますか? または、まれに問題が発生した場合に手動で問題を修正します (これは、私のニーズにとって完全に合理的なオプションです)。