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

如何移除XML根元素的无前缀xmlns命名空间?

移除XML根元素的无前缀默认命名空间方案

可以用XSLT模板实现这个需求,以下是具体的转换代码和说明:

核心XSLT转换模板

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xsd="http://www.w3.org/2001/XMLSchema"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <!-- 原样复制文本、注释、处理指令 -->
    <xsl:template match="text()|comment()|processing-instruction()">
        <xsl:copy/>
    </xsl:template>

    <!-- 处理所有元素:移除默认命名空间,保留本地元素名 -->
    <xsl:template match="*">
        <xsl:element name="{local-name()}">
            <!-- 复制除默认命名空间外的所有属性 -->
            <xsl:copy-of select="@*[namespace-uri() != 'http://www.example.com/mdm/readingxml/2011/07']"/>
            <!-- 保留xsd和xsi的命名空间声明 -->
            <xsl:copy-of select="namespace::xsd|namespace::xsi"/>
            <!-- 递归处理子节点 -->
            <xsl:apply-templates/>
        </xsl:element>
    </xsl:template>
</xsl:stylesheet>

模板说明

  • 针对元素节点:通过local-name()获取不带命名空间前缀的元素名称,创建新的无默认命名空间的元素
  • 过滤掉默认命名空间的属性,只保留xsd、xsi相关的命名空间声明和其他属性
  • 原样保留文本、注释等非元素节点内容

示例效果

输入XML

<Root xmlns="http://www.example.com/mdm/readingxml/2011/07" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <child1>child1</child1>
    <child2>child2</child2>
    <child3>child3</child3>
    <child4>child4</child4>
</Root>

转换后输出XML

<Root xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <child1>child1</child1>
    <child2>child2</child2>
    <child3>child3</child3>
    <child4>child4</child4>
</Root>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:54:59