0

0

Python如何创建带命名空间前缀的XML元素

星降

星降

发布时间:2025-12-19 15:03:35

|

252人浏览过

|

来源于php中文网

原创

在Python中创建带命名空间前缀的XML元素需先调用ET.register_namespace('ns', 'https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38')注册前缀,再用'{URI}local_name'格式构造元素标签,ElementTree会自动添加xmlns:ns声明并输出ns:前缀。

python如何创建带命名空间前缀的xml元素

在Python中创建带命名空间前缀的XML元素,核心是使用 xml.etree.ElementTree标准库)并正确设置 xmlns:prefix 属性和元素的 QName(带前缀的标签名)。关键在于:命名空间声明必须出现在父元素上,且元素标签需用 {namespace_uri}local_name 格式构造,再通过 register_namespace() 绑定前缀,才能让 tostring() 输出带前缀的形式。

正确注册命名空间并设置前缀

ElementTree 默认不保留你“写死”的前缀(如 ns:tag),它按内部命名空间映射生成前缀。必须调用 ET.register_namespace(prefix, uri) 提前注册,否则输出可能用 ns0ns1 等自动生成的前缀。

  • 在构建任何元素前,先调用 ET.register_namespace('ns', 'https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38')
  • 注册后,所有同 URI 的元素都会优先使用该前缀(如 ns:book
  • 同一 URI 只需注册一次,全局生效

构造带命名空间的元素标签

元素的 tag 参数必须是完整限定名:即 {URI}local_name 字符串。不能直接写 'ns:book',否则会被当作普通无命名空间标签处理。

  • 正确写法:ET.Element('{https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}book')
  • 推荐用变量避免重复:NS = {'ns': 'https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38'}; book = ET.Element(f'{{{NS["ns"]}}}book')
  • 子元素同样需用完整 URI 构造,例如 title = ET.SubElement(book, f'{{{NS["ns"]}}}title')

在根元素声明 xmlns:prefix 属性

命名空间声明(xmlns:ns="...")会自动添加到最靠近且包含该命名空间的第一个祖先元素上。通常放在根节点即可覆盖全部子元素。

立即学习Python免费学习笔记(深入)”;

OneAI
OneAI

将生成式AI技术打包为API,整合到企业产品和服务中

下载
  • 无需手动设置 root.set('xmlns:ns', '...') —— ElementTree 会自动完成
  • 但前提是:该命名空间已通过 register_namespace() 注册,且至少有一个元素使用了对应 URI
  • 如果只注册没使用,或 URI 拼写不一致(如末尾多斜杠),声明不会出现

完整可运行示例

以下代码生成 Python Guide

import xml.etree.ElementTree as ET

1. 注册命名空间前缀

ET.register_namespace('ns', 'https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38')

2. 构造根元素(使用完整 URI)

root = ET.Element('{https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}library')

3. 添加子元素(同样用完整 URI)

book = ET.SubElement(root, '{https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}book') title = ET.SubElement(book, '{https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}title') title.text = 'Python Guide'

4. 生成字符串(自动带 ns: 前缀和 xmlns 声明)

print(ET.tostring(root, encoding='unicode'))

相关专题

更多
python开发工具
python开发工具

php中文网为大家提供各种python开发工具,好的开发工具,可帮助开发者攻克编程学习中的基础障碍,理解每一行源代码在程序执行时在计算机中的过程。php中文网还为大家带来python相关课程以及相关文章等内容,供大家免费下载使用。

760

2023.06.15

python打包成可执行文件
python打包成可执行文件

本专题为大家带来python打包成可执行文件相关的文章,大家可以免费的下载体验。

639

2023.07.20

python能做什么
python能做什么

python能做的有:可用于开发基于控制台的应用程序、多媒体部分开发、用于开发基于Web的应用程序、使用python处理数据、系统编程等等。本专题为大家提供python相关的各种文章、以及下载和课程。

762

2023.07.25

format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

619

2023.07.31

python教程
python教程

Python已成为一门网红语言,即使是在非编程开发者当中,也掀起了一股学习的热潮。本专题为大家带来python教程的相关文章,大家可以免费体验学习。

1265

2023.08.03

python环境变量的配置
python环境变量的配置

Python是一种流行的编程语言,被广泛用于软件开发、数据分析和科学计算等领域。在安装Python之后,我们需要配置环境变量,以便在任何位置都能够访问Python的可执行文件。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

549

2023.08.04

python eval
python eval

eval函数是Python中一个非常强大的函数,它可以将字符串作为Python代码进行执行,实现动态编程的效果。然而,由于其潜在的安全风险和性能问题,需要谨慎使用。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

579

2023.08.04

scratch和python区别
scratch和python区别

scratch和python的区别:1、scratch是一种专为初学者设计的图形化编程语言,python是一种文本编程语言;2、scratch使用的是基于积木的编程语法,python采用更加传统的文本编程语法等等。本专题为大家提供scratch和python相关的文章、下载、课程内容,供大家免费下载体验。

709

2023.08.11

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

72

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 4万人学习

Django 教程
Django 教程

共28课时 | 3.2万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号