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

将逗号分隔关键词的XML结构转换为编号关键词XML节点的需求

嘿,这个XML关键词拆分的需求不难搞定!我给你准备了两种实用方案,看你更习惯哪种技术栈:

方案1:用XSLT(XML原生处理的标准方式)

如果是在XML生态里处理,XSLT是最规范的选择,写个样式表就能批量转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" indent="yes"/>

  <!-- 匹配根节点(如果你的XML有外层根元素,比如<root>,可以调整这里的匹配路径) -->
  <xsl:template match="/">
    <xsl:apply-templates select="keywords"/>
  </xsl:template>

  <xsl:template match="keywords">
    <!-- 调用递归模板拆分关键词 -->
    <xsl:call-template name="split-and-wrap">
      <xsl:with-param name="raw-text" select="normalize-space(.)"/>
      <xsl:with-param name="counter" select="1"/>
    </xsl:call-template>
  </xsl:template>

  <xsl:template name="split-and-wrap">
    <xsl:param name="raw-text"/>
    <xsl:param name="counter"/>

    <!-- 只处理前10个关键词 -->
    <xsl:if test="$counter <= 10 and $raw-text != ''">
      <!-- 提取第一个关键词 -->
      <xsl:variable name="current-kw" select="substring-before(concat($raw-text, ','), ',')"/>
      <!-- 动态生成keywordN标签 -->
      <xsl:element name="keyword{$counter}">
        <xsl:value-of select="normalize-space($current-kw)"/>
      </xsl:element>
      <!-- 递归处理剩余关键词 -->
      <xsl:call-template name="split-and-wrap">
        <xsl:with-param name="raw-text" select="normalize-space(substring-after($raw-text, ','))"/>
        <xsl:with-param name="counter" select="$counter + 1"/>
      </xsl:call-template>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

这个样式表会自动把<keywords>里的逗号分隔内容,转成带序号的<keyword1>到<keyword10>标签,还会自动处理关键词前后的空格和多余逗号。

方案2:用Python脚本(灵活易上手)

如果更熟悉Python,用脚本处理会更灵活,比如用xml.etree.ElementTree:

import xml.etree.ElementTree as ET

# 替换成你的输入XML字符串
input_xml = """<keywords>key word 1, key word 2, key word 3, key word 4, key word 5, key word 6, key word 7, key word 8, key word 9, key word 10, extra word</keywords>"""

# 解析输入XML
root = ET.fromstring(input_xml)
# 拆分关键词并清理空格、空项
keywords_list = [kw.strip() for kw in root.text.strip().split(',') if kw.strip()]

# 生成目标XML标签
result_elements = []
for idx, keyword in enumerate(keywords_list, start=1):
    if idx > 10:  # 限制最多生成10个标签
        break
    kw_elem = ET.Element(f"keyword{idx}")
    kw_elem.text = keyword
    result_elements.append(kw_elem)

# 输出结果(可以直接打印或者保存到文件)
for elem in result_elements:
    print(ET.tostring(elem, encoding='unicode'))

运行脚本后,会直接输出每个带序号的关键词标签,多余的关键词会被自动忽略(超过10个的部分)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:40:53