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

如何在DataWeave中移除XML命名空间(保留属性等内容)

移除XML根元素的命名空间前缀(保留其他内容)

方法一:正则替换(适用于结构简单的场景)

针对你给出的XML结构,直接匹配根元素的开头和结尾标签,移除ds2:前缀即可。以Python为例:

import re

input_xml = '''<ds2:note xmlns:ds2="http://sampleSchame"  code= "12332" Id="333-333-333" set="2" St="2024-09-11T11:23:55" sq="2">
<customer>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</customer>
</ds2:note>'''

# 替换根元素的命名空间前缀
output_xml = re.sub(r'</?ds2:note>', lambda match: match.group(0).replace('ds2:', ''), input_xml)

print(output_xml)

注意:该方法仅适合根元素明确、无嵌套同名元素的简单XML,复杂场景建议用专业解析库。

方法二:XML解析库(通用可靠方案)

使用专业XML工具处理更稳妥,避免正则的局限性。以Python的lxml库为例:

from lxml import etree

input_xml = '''<ds2:note xmlns:ds2="http://sampleSchame"  code= "12332" Id="333-333-333" set="2" St="2024-09-11T11:23:55" sq="2">
<customer>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</customer>
</ds2:note>'''

# 解析XML内容
root = etree.fromstring(input_xml.encode('utf-8'))

# 移除根元素的命名空间前缀
root.tag = root.tag.split('}')[-1]

# 输出处理后的XML(保留格式)
output_xml = etree.tostring(root, encoding='unicode', pretty_print=True)

print(output_xml)

此方法会自动保留所有属性、子元素及命名空间声明,适用于各类XML结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:46:18