Python如何创建带属性的XML节点
技术百科
畫卷琴夢
发布时间:2026-01-02
浏览: 次 Python中创建带属性的XML节点最常用方式是xml.etree.ElementTree模块,推荐初始化时传入属性字典或用set()方法设置,属性值必须为字符串,支持中文和缩进需借助minidom格式化。
Python中创建带属性的XML节点,最常用且推荐的方式是使用内置的 xml.etree.ElementTree 模块。它简洁、标准、无需额外安装,适合大多数场景。
用Element创建节点并设置属性
直接在创建 Element 时传入属性字典,或后续用 set() 方法添加/修改属性:
from xml.etree import ElementTree as ET方式1:初始化时传入属性(推荐)
node = ET.Element("person", {"id": "101", "type": "student"})
方式2:创建后用 set() 添加或更新
node = ET.Element("person") node.set("id", "101") node.set("type", "student")
给子节点添加属性并构建完整结构
属性只属于节点本身,与文本内容无关。可链式构建带属性的嵌套结构:
root = ET.Element("school")
添加带属性的 student 节点
student = ET.SubElement(root, "student", id="2025001", grade="A")
student.text = "张三" # 设置文本内容(不是属性)
添加带属性的 course 子节点
course = ET.SubElement(student, "course", code="CS101", credits="3")
course.text = "Python编程"
生成字符串(美化缩进需自行处理或用第三方库)
print(ET.tostring(root, encoding="unicode"))
注意属性值必须是字符串
ElementTree 要求所有属性值为字符串类型。传入数字、布尔值等会报错:
- ✅ 正确:
node.set("age", "22")、node.set("active", "true") - ❌ 错误:
node.set("age", 22)(会抛TypeError) - ? 建议统一用
str()转换,如node.set("count", str(5))
保存到文件并支持中文和缩进(可选增强)
默认 tostring() 不缩进,也不自动声明编码。如需可读性更好的输出,可简单补缩进,或用 xml.dom.minidom 格式化:
# 简单缩进(适用于小结构)
rough_string = ET.tostring(root, encoding="unicode")
dom = xml.dom.minidom.parseString(rough_string)
pretty_xml = dom.toprettyxml(indent=" ", encoding="utf-8").decode("utf-8")
with open("output.xml", "w", encoding="utf-8") as f:
f.write(pretty_xml)
# python
# 编码
# red
# node
# python编程
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- Mac怎么进行语音输入_Mac听写功能设置与使用【
- mac怎么安装pip_MAC Python pip
- LINUX如何删除用户和用户组_Linux use
- 如何使用Golang模拟请求超时_Golang c
- 如何在Golang中处理模块冲突_解决依赖版本不兼
- Python邮件系统自动化教程_批量发送解析与模板
- Windows服务持续崩溃怎样修复_系统服务保护机
- 如何优化Golang内存分配与GC调度_Golan
- Windows怎样关闭开始菜单广告_Windows
- Mac怎么设置鼠标滚动速度_Mac鼠标设置详细参数
- MAC怎么使用表情符号面板_MAC Emoji快捷
- Win11开机速度慢怎么优化_Win11系统启动加
- Windows11如何设置专注助手_Windows
- 如何在Golang中使用replace替换模块_指
- php打包exe如何加密代码_防反编译保护方法【技
- VSC里PHP变量未定义报错怎么解决_错误抑制技巧
- 如何在 Django 中安全修改用户密码而不使会话
- 如何使用 Selenium 正确获取篮球参考网站球
- Mac自带的词典App怎么用_Mac添加和使用多语
- Python技术债务管理_长期维护解析【教程】
- Go语言中CookieJar的持久化机制解析:内存
- 如何使用Golang sort排序切片_Golan
- Win11怎么设置快速访问主页_Windows11
- 如何使用Golang开发基础文件下载功能_Gola
- Windows10电脑怎么设置虚拟光驱_Win10
- php转mp4怎么设置帧率_调整php生成mp4视
- 如何在Golang中编写端到端测试_Golang
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- 如何使用Golang实现多重错误处理_Golang
- Win11怎么恢复出厂设置_Win11重置此电脑保
- c++如何获取map中所有的键_C++遍历键值对提
- php485读数据时阻塞怎么办_php485非阻塞
- php转mp4怎么保留字幕_php处理带字幕视频转
- C++友元类使用场景_C++类间协作设计方式讲解
- C++如何使用std::async进行异步编程?(
- c++ stringstream用法详解_c++字
- Python高性能计算项目教程_NumPyCyth
- 如何在Mac上搭建Golang开发环境_使用Hom
- Win11怎么关闭系统推荐内容_Windows11
- Win11怎么用设置清理回收站_Win11设置清理
- Win11如何设置环境变量 Win11添加和修改系
- Win11无法拖拽文件到任务栏怎么办_Win11开
- VSC怎样在VSC中调试PHPAPI_接口调试技巧
- 手机php文件怎么变成mp4_安卓苹果打开php转
- Python日志系统设计与实现_高可观测性架构实战
- Python函数接口文档化_自动化说明【指导】
- php怎么下载安装后无法解析php文件_服务器配置
- Python正则表达式实战_模式匹配说明【教程】
- Win10 BitLocker加密教程 Win10
- Win11怎么清理C盘下载文件夹_Win11清理下

必须为字符串,支持中文和缩进需借助minidom格式化。
QQ客服