在 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 输出中重命名标签的主要内容,如果未能解决你的问题,请参考以下文章

php 在WordPess中重命名发布标签

删除分支后在 Github 中重命名/编辑标签?

在android中重命名包名

重命名元素的 XSLT 问题——更改命名空间

在bash中重命名文件名

在PowerShell中重命名命令的输出