テキスト テンプレートを更新して Excel スプレッドシートを作成しているため、テキストを PL/SQL メソッドから XML 準拠のテキストに変換する必要がある同僚がいます。
テキストをXML準拠のテキストに変換/エンコードするPL/SQLの方法はありますか?
XML文字を変換したいだけなら、次のようなことをしたいでしょう...
outgoing_text := DBMS_XMLGEN.CONVERT(incoming_text)
ここoutgoing_text
で、 とincoming_text
は両方とも VARCHAR2 または CLOB です。
2 番目の引数を指定できますが、デフォルトではDBMS_XMLGEN.ENTITY_ENCODE
... 2 番目の引数として渡すことで XML エンティティをデコードすることもできDBMS_XMLGEN.ENTITY_DECODE
ます。
それ以降のバージョンの oracle には、XML データを操作するためのXML パッケージが組み込まれています。
たとえば、これはあなたの同僚がやりたいことですか?:
SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual;
dbms_xmlgen に加えて、sql メソッド xmlelement を使用して、値を抽出して戻すことができます。
select extract(xmlelement("mytest",my_variable),'mytest/text()') from dual;
xmlelement 関数はテキストを XML に準拠させ、extract 関数を使用してテキストをそのまま抽出します。(注: extractValue 関数は、テキストを非 XML 準拠のバージョンに変換します。)
hamischmcnオプションは簡単で明確ですが、オラクルフォームでは機能しません。それを使用して多くのことを試しましたが、何もありません...このようなものを使用して手動でxmlを生成できます
utl_file.put_line_nchar (file_id, 'xml version="1.0" encoding="utf-8"');
utl_file.put_line_nchar (file_id, '開始');
-- タグを定義する FOR ループ
utl_file.put_line_nchar (file_id, '/Start');
注: エディターでは、XML およびタグのタイトルに < > 記号を入れることができません
Oracle Forms に関する Rulas の問題に関しては、(さまざまなバージョンで) Forms にできないことがたくさんあり、データベース パッケージを使用する必要があります。
そのため、dbms_xmlgen を実行するデータベース PL/SQL 関数を作成し、XML のサイズに応じて varchar2 または clob を返します。その後、フォームからその関数を呼び出すことができます。データを Forms に戻したら、text_io または webutil を使用して XML ファイルを Excel にプッシュします。
または、データベース側にとどまり、utl_file を使用して XML 出力を取得できるディレクトリにプッシュします。