10

我有一位同事需要将文本从 PL/SQL 方法转换为符合 XML 的文本,因为他正在通过更新文本模板来构建 excel 电子表格。

PL/SQL 中是否有将文本转换/编码为 XML 兼容文本的方法?

4

5 回答 5

15

好吧,如果你只是想转换 XML 字符,你会想做类似的事情......

  outgoing_text := DBMS_XMLGEN.CONVERT(incoming_text)

其中outgoing_textincoming_text都是 VARCHAR2 或 CLOB。

您可以指定第二个参数,但默认为DBMS_XMLGEN.ENTITY_ENCODE... 它还可以通过DBMS_XMLGEN.ENTITY_DECODE作为第二个参数传递来解码 XML 实体。

于 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,然后使用提取函数,它将按原样提取文本。(注意:extractValue 函数会将文本转换回不符合 XML 的版本。)。

于 2009-02-05T18:35:26.737 回答
0

hamischmcn 选项简单明了,但它在 oracle 表单中不起作用,我尝试了很多使用它,但什么也没有……你可以手动生成 xml,使用类似这样的东西

utl_file.put_line_nchar (file_id, 'xml version="1.0" encoding="utf-8"');

utl_file.put_line_nchar (file_id, '开始');

--A FOR 循环,您可以在其中定义标签

utl_file.put_line_nchar (file_id, '/Start');

注意:编辑器不允许我将 < > 符号放在 xml 和标签标题中

于 2009-01-20T17:03:38.880 回答
0

关于 Rulas 在 Oracle Forms 上的问题,Forms 有很多不能做的事情(在各种版本中),您需要使用数据库包。

因此,编写一个执行 dbms_xmlgen 并返回 varchar2 或 clob 的数据库 PL/SQL 函数,具体取决于 XML 的大小。然后您可以从 Forms 中调用该函数。当您将数据返回到 Forms 时,使用 text_io 或 webutil 将 XML 文件推送到 Excel。

或者留在数据库端并使用 utl_file 将 XML 输出推送到您可以获取它的目录。

于 2009-01-21T15:20:09.307 回答