在 XML 输出中重命名标签
Posted
技术标签:
【中文标题】在 XML 输出中重命名标签【英文标题】:Renaming tags in XML output 【发布时间】:2009-12-10 19:45:26 【问题描述】:我有一些代码可以从一些表中生成 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”,我只是不确定最好的方法来继续这个。
【问题讨论】:
【参考方案1】:您不能在重命名列的表上创建视图。如果您将它们放在双引号中,Oracle 将使用大小写混合的列名
SELECT PRSN_ID "personID"....
FROM
【讨论】:
呃……我怎么会错过呢? :P 是的,我可能最终会这样做(除非 DBA 对象为这些表创建 >90 个视图 - 不过我可能可以通过脚本来做到这一点)。谢谢你的想法! 这是我的首选解决方案,但我无法在数据库上创建视图,所以现在我使用 Excel 宏来生成丑陋的选择语句,直到 DBA 可以创建视图。跨度> 【参考方案2】:如果您有一个生成的映射文件说 PRSN_ID 应该是 personID,为什么不使用该映射信息生成您的第一个 SELECT 命令?
如果该 SELECT 命令执行您想要的操作,生成它可以消除乏味。
【讨论】:
您的意思是动态生成查询?我想了想。当时看起来有点多(必须以某种方式从它所在的文本文件中提取映射信息),尽管我可能仍然会重新考虑它是否是最好看的选项。还有另一个团队可能希望输出中的名称与我们当前使用的名称不同,所以我认为最好在生成输出后进行翻译。以上是关于在 XML 输出中重命名标签的主要内容,如果未能解决你的问题,请参考以下文章