xml - 从 Oracle 表在 PL/SQL 中生成 XML 文档

标签 xml oracle plsql xmldom

我必须从 Oracle 中的某些表生成 PL/SQL 中的 XML 文档。我以前从来没有这样做过,我发现似乎有几种主要的方法可以做到这一点:

  • xmldom API
  • xml 函数(例如 xmlelement、xmlagg、xmlroot)
  • dbms_xmlgen 函数

将引用 65 个表来生成单个文档,我将不得不根据 xsd 验证输出。这些文档将批量生成(而不是按需生成)——我不知道这是否会有所不同。使用 Oracle 10g。

我最初倾向于使用 xmldom 包,因为它看起来更灵活,但我很难找到好的示例或文档,而 xml 函数似乎有更好的文档记录并且通常更受欢迎。这是有原因的吗?

对于此类任务,人们通常推荐什么方法?

最佳答案

根据我的经验,DBMS_XMLGEN 适合快速而复杂的数据到 xml 的转换,但我一直不太喜欢它,因为您必须将 SQL 作为字符串传递。此外,您对元素名称和 ROWSET/ROW 结构的控制受到严重限制。

如果您处理的是相对简单的结构,那么 XML 函数非常方便,也是我的最爱。例如,一旦进入多个 XMLAgg 级别,我发现它很快就会陷入困惑。

XMLDOM 是生成 XML 最灵活的方式,尤其是在结构更复杂或涉及迭代逻辑的情况下。这里的主要缺点是它本质上是 Java DOM 的包装器,其中大多数方法接受 DOMNode 输入,但 PL/SQL 不直接支持多态性,因此您最终会在 DOMElement 和 DOMNode 之间进行大量显式转换,反之亦然,等等。一般来说,我会创建自己的重载过程包来封装所有这些,并减少使用起来的痛苦。

关于xml - 从 Oracle 表在 PL/SQL 中生成 XML 文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1821819/

相关文章:

c# - 使用 Linq 从 Xml 获取特定节点

sql - 我应该如何将 DDL 更改从一个环境迁移到另一个环境?

oracle - ORA-0131 :insufficient privileges DEBUG CONNECT SESSION

xml - 处理 XML 时的异常处理

sql - Oracle函数: How to pass a table name as parameter,并使用游标结果作为表名?

java - 如何将 JPA 与随机数据库(即用户提交的)一起使用

ruby-on-rails - Nokogiri XML 文件输出位于何处?

sql - 获取最高价格商品的 ID

xml - 是否可以在 SuiteScript 2.0 中将图像从图像字段加载到 PDF 中

oracle - ORACLE 中的逻辑分组模式?