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; ?>
】
相关推荐
- 如何使用Golang管理模块版本_Golanggo
- 如何理解Go指针和内存分配关系_Go Pointe
- Win11如何更改任务栏颜色 Win11自定义任务
- php8.4如何实现队列任务_php8.4redi
- 如何在 Go 同包不同文件中正确引用结构体
- 如何在 Go 中调用动态链接库(.so)中的函数
- Drupal 中渲染节点时出现 HTML 标签嵌套
- Win11触摸板没反应怎么办_开启Win11笔记本
- Win11怎么更改默认打开方式_Win11关联文件
- Win11怎么关闭粘滞键_彻底禁用Windows
- Win11怎么连接蓝牙耳机_Win11蓝牙设备配对
- Win11无法安装软件怎么办_Win11解除应用安
- windows系统如何安装cab更新补丁_wind
- mac怎么安装pip_MAC Python pip
- Windows10系统怎么查看CPU温度_Win1
- Win11声音太小怎么办_Windows 11开启
- Python日志系统设计与实现_高可观测性架构实战
- Win11怎么查看局域网电脑_Windows 11
- Windows10无法连接到Internet_Wi
- XSLT怎么生成动态的HTML属性名和标签名
- Windows电脑键盘突然失灵怎么办?(驱动与硬件
- Win11右键反应慢怎么办 Win11优化右键菜单
- 如何高效识别并拦截拼接式恶意域名 spam
- Win11怎么关闭自动调节亮度_Windows11
- php下载安装包怎么选_threadsafe与nt
- php订单日志怎么按状态筛选_php筛选不同状态订
- Win10如何关闭安全中心所有通知 Win10禁用
- php中self::能调用子类重写的方法吗_静态绑
- Windows音频驱动无声音原因解析_声卡驱动错误
- Win10怎样设置闹钟贪睡时间 Win10闹钟贪睡
- PythonPandas数据分析项目教程_时间序列
- 如何使用Golang实现负载均衡_分发请求到多个服
- Win11怎么更改鼠标指针_Windows 11自
- PHP 中如何在函数内持久修改引用变量所指向的目标
- 如何在 Go 项目开发中正确处理本地包导入与远程模
- 如何在 Go 中正确测试带 Cookie 的 HT
- c++怎么使用std::tuple存储多元组数据_
- MAC如何安装Git版本控制工具_MAC开发环境配
- Windows服务启动类型恢复方法_错误修改导致的
- Win11怎么设置开机问候语_自定义Win11锁屏
- 如何在 IIS 上为 ASP.NET 6 应用排除
- 如何在Golang中引入测试模块_Golang测试
- Win11怎么开启游戏模式_Win11优化游戏帧数
- 如何诊断并终止卡死的 multiprocessin
- Win11怎么关闭任务栏小图标_Windows11
- mac本地php环境如何开启curl_curl扩展
- Win11怎么设置指纹解锁 Win11笔记本录入指
- Python多线程使用规范_线程安全解析【教程】
- Win11怎么查看已连接wifi密码 Win11查
- Windows如何拦截2345弹窗广告_Windo

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