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

在Python中创建带命名空间前缀的XML元素,核心是使用 xml.etree.ElementTree(标准库)并正确设置 xmlns:prefix 属性和元素的 QName(带前缀的标签名)。关键在于:命名空间声明必须出现在父元素上,且元素标签需用 {namespace_uri}local_name 格式构造,再通过 register_namespace() 绑定前缀,才能让 tostring() 输出带前缀的形式。
ElementTree 默认不保留你“写死”的前缀(如 ns:tag),它按内部命名空间映射生成前缀。必须调用 ET.register_namespace(prefix, uri) 提前注册,否则输出可能用 ns0、ns1 等自动生成的前缀。
ET.register_namespace('ns', 'https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38')
ns:book)元素的 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')
title = ET.SubElement(book, f'{{{NS["ns"]}}}title')
命名空间声明(xmlns:ns="...")会自动添加到最靠近且包含该命名空间的第一个祖先元素上。通常放在根节点即可覆盖全部子元素。
立即学习“Python免费学习笔记(深入)”;
root.set('xmlns:ns', '...') —— ElementTree 会自动完成register_namespace() 注册,且至少有一个元素使用了对应 URI以下代码生成 <library xmlns:ns="https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38"><book><title>Python Guide</title></book></library>:
import xml.etree.ElementTree as ET
<h1>1. 注册命名空间前缀</h1><p>ET.register_namespace('ns', '<a href="https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38">https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38</a>')</p><h1>2. 构造根元素(使用完整 URI)</h1><p>root = ET.Element('{<a href="https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}library">https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}library</a>')</p><h1>3. 添加子元素(同样用完整 URI)</h1><p>book = ET.SubElement(root, '{<a href="https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}book">https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}book</a>')
title = ET.SubElement(book, '{<a href="https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}title">https://www.php.cn/link/aedd87de3760230b3c1e74e37b875a38}title</a>')
title.text = 'Python Guide'</p><h1>4. 生成字符串(自动带 ns: 前缀和 xmlns 声明)</h1><p>print(ET.tostring(root, encoding='unicode'))
以上就是Python如何创建带命名空间前缀的XML元素的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号