我想使用 XSLT 将嵌套的 xml 转换为展平 xml。
传入的 xml 结构将类似,但节点名称会因传入的 xml 更改,因此希望动态处理
样本输入
<?xml version="1.0" encoding="UTF-8"?>
<queryResponse>
<Account>
<Id>0010</Id>
<Name>AA</Name>
<RecordTypeId>0122/RecordTypeId>
<RecordType>
<Id>012</Id>
<DeveloperName>Legal_Associate</DeveloperName>
</RecordType>
</Account>
<Account>
<Id>0011</Id>
<Name>BB</Name>
<RecordTypeId>0123</RecordTypeId>
<RecordType>
<Id>013</Id>
<DeveloperName>Legal_Associate</DeveloperName>
</RecordType>
</Account>
</queryResponse>
预期产出
<?xml version="1.0" encoding="UTF-8"?>
<queryResponse>
<Account>
<Id>0010</Id>
<Name>AA</Name>
<RecordTypeId>0122</RecordTypeId>
<RecordType.Id>012</RecordType.Id>
<RecordType.DeveloperName>Legal_Associate</RecordType.DeveloperName>
</Account>
<Account>
<Id>0011</Id>
<Name>BB</Name>
<RecordTypeId>0123<RecordTypeId>
<RecordType.Id>013</RecordType.Id> <RecordType.DeveloperName>Legal_Associate</RecordType.DeveloperName>
</Account>
</queryResponse>
在发布问题时,您也应该发布尝试过的代码,因为我们可以告诉您更新情况。
这是您可以获得答案的代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="RecordType">
<xsl:for-each select="*">
<xsl:element name="{concat(name(..),'.',name())}">
<xsl:apply-templates select="node()"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句