从自引用Oracle表生成XML

时间:2011-01-10 15:35:59

标签: xml oracle plsql

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

服务

service_id ----------号码 service_name ----- 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 个答案:

答案 0 :(得分:2)

This example使用DBMS_XMLGEN.newContextFromHierarchy看起来非常类似于您尝试做的事情。