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; ?>
】
相关推荐
- 如何用列表一次性对 DataFrame 的指定列应
- 小程序里php怎么变mp4_小程序调用php生成m
- C++中引用和指针有什么区别?(代码说明)
- Windows10如何删除Windows.old_
- Win11如何关闭游戏模式 Win11禁用Xbox
- 如何使用Golang实现RPC序列化与反序列化_G
- Windows系统被恶意软件破坏后的恢复策略_错误
- Win11更新后变慢怎么办_Win11系统更新后卡
- Win11怎么设置单手模式_Win11触控键盘布局
- Win11怎么设置虚拟内存_Windows 11优
- Win11如何添加/删除输入法 Win11切换中英
- Win10怎样安装PPT模板_Win10安装PPT
- mac本地php环境如何开启curl_curl扩展
- Windows系统文件被保护机制阻止怎么办_权限不
- Mac如何将HEIC图片格式转为JPG_Mac批量
- Python安全爬虫设计_IP代理池与验证码识别策
- php订单日志权限怎么设_php订单日志文件权限设
- Win11怎么打开注册表_Windows 11注册
- Python解释执行模型_字节码流程说明【指导】
- 如何使用Golang实现聊天室消息存档_存储聊天记
- 如何使用正则表达式提取以编号开头、后接多个注解的逻
- Win11右键反应慢怎么办 Win11优化右键菜单
- 如何在Golang中使用replace替换模块_指
- Win11屏幕亮度突然变暗怎么解决_自动变暗问题处
- Win11怎么更改鼠标指针方案_Windows11
- Windows10怎么用“讲述人”读屏辅助 Win
- Mac如何彻底清理浏览器缓存?(Safari与Ch
- php控制舵机角度怎么调_php发送pwm信号控制
- Go 中的 := 运算符:类型推导机制与使用边界详
- php订单日志怎么记录评价_php记录订单评价日志
- Python装饰器设计思路_功能增强机制说明【指导
- 如何理解Go指针和内存分配关系_Go Pointe
- 零基础学会Python自动化办公_高效处理Exce
- Win11怎么设置默认终端应用_Windows11
- php8.4新语法match怎么用_php8.4m
- 如何使用Golang进行HTTP服务性能测试_测量
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- Windows 11怎么更改锁屏超时时间_Wind
- Win11怎么关闭SmartScreen_禁用Wi
- Python与Docker容器化部署实战_镜像构建
- 如何在 Go 中判断变量是否为函数类型
- Mac怎么进行语音输入_Mac听写功能设置与使用【
- Flask 表单数据通过 SMTP 发送邮件的完整
- c++怎么使用std::unique实现去重_c+
- PythonWeb前后端整合项目教程_FastAP
- 如何在Golang中编写异步函数测试_Golang
- Win11无法拖拽文件到任务栏怎么办_Win11开
- Windows10电脑怎么连接蓝牙设备_Win10
- Win11怎么查看已连接wifi密码 Win11查
- Win11怎么清理C盘OneDrive缓存_Win

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