我必须从 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/