10

テキスト テンプレートを更新して Excel スプレッドシートを作成しているため、テキストを PL/SQL メソッドから XML 準拠のテキストに変換する必要がある同僚がいます。

テキストをXML準拠のテキストに変換/エンコードするPL/SQLの方法はありますか?

4

5 に答える 5

15

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ます。

于 2009-01-21T15:51:34.703 に答える
3

それ以降のバージョンの oracle には、XML データを操作するためのXML パッケージが組み込まれています。
たとえば、これはあなたの同僚がやりたいことですか?:

SELECT DBMS_XMLGEN.getXML('SELECT * FROM emp') FROM dual;
于 2009-01-20T16:45:22.880 に答える
1

dbms_xmlgen に加えて、sql メソッド xmlelement を使用して、値を抽出して戻すことができます。

select extract(xmlelement("mytest",my_variable),'mytest/text()') from dual;

xmlelement 関数はテキストを XML に準拠させ、extract 関数を使用してテキストをそのまま抽出します。(注: extractValue 関数は、テキストを非 XML 準拠のバージョンに変換します。)

于 2009-02-05T18:35:26.737 に答える
0

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 およびタグのタイトルに < > 記号を入れることができません

于 2009-01-20T17:03:38.880 に答える
0

Oracle Forms に関する Rulas の問題に関しては、(さまざまなバージョンで) Forms にできないことがたくさんあり、データベース パッケージを使用する必要があります。

そのため、dbms_xmlgen を実行するデータベース PL/SQL 関数を作成し、XML のサイズに応じて varchar2 または clob を返します。その後、フォームからその関数を呼び出すことができます。データを Forms に戻したら、text_io または webutil を使用して XML ファイルを Excel にプッシュします。

または、データベース側にとどまり、utl_file を使用して XML 出力を取得できるディレクトリにプッシュします。

于 2009-01-21T15:20:09.307 に答える