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

XML文件转换:将属性值转为标签属性、标签值转为对应属性值

可行性结论

该XML结构转换需求完全可实现,这类节点属性重组属于XML处理的常规场景,不存在技术障碍。

最优实现方案

针对这类XML结构转换场景,首选XSLT(XML原生支持的标准转换语言)实现,优势是逻辑为声明式编写、无需手动处理XML转义/标签闭合/命名空间等底层细节、执行效率高、跨语言兼容。

转换核心逻辑

  • 聚合所有同级的<attribute>节点,仅输出一个<attribute>根标签
  • 遍历每个原<attribute>节点:
    • 读取节点的name属性值,作为输出标签的新属性名
    • 读取节点的文本内容,作为对应新属性的属性值
  • 丢弃原节点的name属性,最终输出自闭合单标签

可直接使用的XSLT转换代码

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/*">
    <attribute>
      <xsl:for-each select="attribute">
        <!-- 动态生成属性:属性名取原name属性值,属性值取原节点文本 -->
        <xsl:attribute name="{@name}">
          <xsl:value-of select="normalize-space(text())"/>
        </xsl:attribute>
      </xsl:for-each>
    </attribute>
  </xsl:template>
</xsl:stylesheet>

以上代码针对示例输入,可直接输出期望的转换结果:

<attribute Krantyp="value" Beschreibung="value2"/>
其他可选方案

如果项目中不方便引入XSLT处理器,也可以使用各语言自带的XML解析库(比如Python内置的xml.etree.ElementTree、Java的DOM解析、C#的System.Xml)手动遍历节点重组结构,但是这类方案需要手动处理XML特殊字符转义、属性名合法性校验、空白字符过滤等边界问题,代码冗余度更高,出错概率更大,不属于最优选择。

注意事项

如果原节点name属性的取值包含XML属性名不允许的特殊字符(比如空格、&、<、数字开头等),需要在转换时增加合法性校验和替换逻辑,避免生成不符合规范的无效XML。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:09:23