You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按Maps中Code顺序获取XML对应Description值?

按Maps的Code顺序匹配Details中的Description值(XSL解决方案)

问题场景

输入XML的<Group>节点包含<Maps>和<Details>子节点:

  • <Maps>下的<Map>节点已按Code值[20000,30000,40000,50000]排序
  • <Details>下的<Detail>节点顺序与<Maps>的Code顺序不一致,需按<Maps>的顺序提取对应<Description>值

示例输入XML:

<Group>
  <Maps>
    <Map><Code>20000</Code></Map>
    <Map><Code>30000</Code></Map>
    <Map><Code>40000</Code></Map>
    <Map><Code>50000</Code></Map>
  </Maps>
  <Details>
    <Detail><Code>30000</Code><Description>描述B</Description></Detail>
    <Detail><Code>20000</Code><Description>描述A</Description></Detail>
    <Detail><Code>50000</Code><Description>描述D</Description></Detail>
    <Detail><Code>40000</Code><Description>描述C</Description></Detail>
  </Details>
</Group>

解决方案:使用XSLT键(Key)实现精准匹配

核心思路是通过<xsl:key>建立Code到<Detail>节点的索引,遍历已排序的<Map>节点时,通过索引快速定位对应<Detail>的<Description>。

完整XSL代码:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <!-- 建立Code与Detail节点的映射索引 -->
  <xsl:key name="detail-by-code" match="Detail" use="Code"/>

  <xsl:template match="/Group">
    <result>
      <!-- 按Maps的原有顺序遍历Map节点 -->
      <xsl:for-each select="Maps/Map">
        <entry>
          <Code><xsl:value-of select="Code"/></Code>
          <!-- 通过key查找对应Code的Description -->
          <Description>
            <xsl:value-of select="key('detail-by-code', Code)/Description"/>
          </Description>
        </entry>
      </xsl:for-each>
    </result>
  </xsl:template>
</xsl:stylesheet>

代码说明

  1. 索引建立:<xsl:key>定义了以Code值为键的索引,将所有<Detail>节点按Code分组,确保通过Code能直接定位到对应的<Detail>。
  2. 顺序保持:遍历<Maps>下的<Map>节点时,完全遵循其已有的排序,避免重新排序操作。
  3. 高效匹配:使用key()函数查找对应<Detail>,比循环遍历<Details>节点的效率更高,尤其在节点数量较多时。

转换后输出

<result>
  <entry>
    <Code>20000</Code>
    <Description>描述A</Description>
  </entry>
  <entry>
    <Code>30000</Code>
    <Description>描述B</Description>
  </entry>
  <entry>
    <Code>40000</Code>
    <Description>描述C</Description>
  </entry>
  <entry>
    <Code>50000</Code>
    <Description>描述D</Description>
  </entry>
</result>

内容的提问来源于stack exchange,提问作者User501

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:02:44