如何通过OIC映射将元素标签转换为键值对格式?
问题描述
输入负载格式如下:
<Marks> <Math>87</Math> <Science>92</Science> <History>85</History> </Marks>
能否使用OIC映射将其转换为以下格式?恳请提供可行解决方案:
<Marks> <Subject>Math</Subject> <Value>87</Value> </Marks> <Marks> <Subject>Science</Subject> <Value>92</Value> </Marks> <Marks> <Subject>History</Subject> <Value>85</Value> </Marks>
可行解决方案
方案一:OIC可视化映射实现
- 先将源XML和目标XML的Schema导入OIC集成项目,明确源结构为单
<Marks>节点下包含多个科目子节点,目标结构为重复的<Marks>节点(每个含<Subject>和<Value>)。 - 打开映射编辑器,选中源
<Marks>节点下的所有子节点,添加For Each组件循环遍历这些科目节点。 - 循环内部映射:
- 用OIC内置的
local-name()函数获取当前循环节点的名称,映射到目标<Subject>字段。 - 将当前循环节点的文本值直接映射到目标
<Value>字段。
- 用OIC内置的
- 保存映射后测试,即可生成目标格式的多
<Marks>节点输出。
方案二:自定义XSLT片段实现
如果可视化映射无法满足需求,可直接插入XSLT片段完成转换:
<xsl:template match="/"> <xsl:for-each select="Marks/*"> <Marks> <Subject><xsl:value-of select="local-name()"/></Subject> <Value><xsl:value-of select="."/></Value> </Marks> </xsl:for-each> </xsl:template>
操作步骤:
- 在OIC映射编辑器工具栏点击XSLT片段按钮。
- 将上述代码粘贴到片段编辑器,替换默认模板内容。
- 保存映射并测试,即可得到符合要求的输出。
内容的提问来源于stack exchange,提问作者SasiS
相关产品推荐
相关产品推荐

