从自引用 Oracle 表生成 XML

Posted

技术标签:

【中文标题】从自引用 Oracle 表生成 XML【英文标题】:Generating XML from self referencing Oracle table 【发布时间】:2011-01-10 15:35:58 【问题描述】:

我有一个 Oracle 数据库,其中包含一个名为“服务”的分层医疗数据的自引用表。

服务

service_id ---------- 号码 服务名称 ----- varchar2(200) service_parent --- 编号

其中每个服务可以有 1 个父服务以及 n 个子服务。 “***”服务的 service_parent 值为零。

我需要从这些数据中生成一个 XML 结构。我搜索了网络,但似乎找不到这种 XML 生成的示例。 这是我需要的 XML 输出示例:

<services>
    <service id="1" name="Medicine">
        <service id="10" name="Anesthesia">

        </service>
    </service>
    <service id="2" name="Surgery">
        <service id="3" name="Cardiology">
            <service id="4" name="Bypass">

            </service>
            <service id="5" name="Transplant">

            </service>
            <service id="6" name="Valve Replacement">

            </service>
        </service>
        <service id="9" name="Ear Nose Throat">
            <service id="7" name="Laryngectomy">

            </service>
            <service id="8" name="Septoplasty">

            </service>
        </service>
    </service>  
</services>

我尝试过使用 CONNECT_BY_ISLEAF、CONNECT_BY_PATH、CONNECT BY PRIOR 等...但我能得到的最接近的是:

<services>
<service id="1" name="Medicine" />
<service id="10" name="Anesthesia" />
<service id="2" name="Surgery" />
<service id="3" name="Cardiology" />
<service id="4" name="Bypass" />
<service id="5" name="Transplant" />
<service id="6" name="Valve Replacement" />
<service id="9" name="Ear Nose Throat" />
<service id="8" name="Laryngectomy" />
<service id="7" name="Septoplasty" />
</services>

获取上述 XML 结构的最佳方法是什么?

【问题讨论】:

【参考方案1】:

This example 使用 DBMS_XMLGEN.newContextFromHierarchy 看起来与您尝试执行的操作非常相似。

【讨论】:

以上是关于从自引用 Oracle 表生成 XML的主要内容,如果未能解决你的问题,请参考以下文章

Laravel,如何从自定义表的 jwt 令牌获取登录用户

如何让hibernate自动生成表

从自引用表中获取层次结构数据

从自引用表中获取“根记录”

使用 EntityFramework.Core 从自引用表加载完整的层次结构

Oracle数据库中序列(SEQUENCE)的用法详解