在XML输出中重命名标记

时间:2009-12-10 19:45:26

标签: xml oracle plsql

我有一些从某些表生成XML的代码。我正在查询的表是从XSD文件生成的,该文件描述了我应该生成的XML。问题是表和字段的名称遵循与模式中的名称约定不同的命名约定 - 例如,模式中名为“personID”的元素在数据库表中将为“PRSN_ID”。要生成输出,我的代码如下所示:

Select xmlelement("person",
         xmlelement("personID",PRSN_ID),
         xmlelement("personName",PRSN_NAM),
...

你可以想象,这开始变得单调乏味。我正在寻找更好的解决方案。我知道我可以使用xmlforest为标签提供与所选列相同的名称,现在我需要一种翻译方式。例如,如果我生成:

/*the full long list of columns names can be generated so it's an easy copy-paste:*/
select xmlelement("PRSN", xmlforest(PRSN_ID,PRSN_NAM,...

/*produces this:*/

<PRSN>
    <PRSN_ID>1<PRSN_ID/>
    <PRSN_NAM>BOB<PRSN_NAM/>
...

我需要将其翻译成:

<person>
    <personID>1</personID>
    <personName>BOB</personName>
...

我如何在Oracle PL / SQL中进行这种翻译?我有一个生成的映射文件告诉我“PRSN_ID”应该被翻译成“personID”,我只是不确定最好的方法来继续这个。

2 个答案:

答案 0 :(得分:3)

无法使用重命名的列创建表格视图。如果您将它们放在双引号

中,Oracle将执行混合大小写列名称
SELECT PRSN_ID "personID"....
FROM 

答案 1 :(得分:0)

如果您有一个生成的映射文件,说PRSN_ID应该是personID,那么为什么不使用该映射信息生成第一个SELECT命令?

如果SELECT命令符合你的要求,那么生成它就会消除乏味。