利用 Python ElementTree 生成 xml的实例
作者:剑西楼 发布时间:2022-04-14 08:32:48
Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree。
首先 import 之:
from xml.etree import ElementTree as etree
然后开始构建 xml 树:
from xml.etree.ElementTree import Element, SubElement, ElementTree
# 生成根节点
root = Element('root')
# 生成第一个子节点 head
head = SubElement(root, 'head')
# head 节点的子节点
title = SubElement(head, 'title')
title.text = 'Well Dola!'
# 生成 root 的第二个子节点 body
body = SubElement(root, 'body')
# body 的内容
body.text = 'I love Dola!'
tree = ElementTree(root)
这样就得到了一个 xml 树的对象 tree 以及它的根节点的对象 root
接着我们把它们变成 xml 串,有两个办法,一个是用 tree 对象的 write 方法将 xml 内容写成一个文件,还有一个是用 etree 的 tostring 方法转成 xml 字符串:
# 第一种
tree.write('result.xml', encoding='utf-8')
# 第二种
xml_string = etree.tostring(root)
# xml_string 就是 xml 字符串了
但是第二种有一个问题,就是它没有
<?xml version="1.0"?>
这个头部定义内容:
'<root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'
怎么办呢?
有一个办法是使用 minidom 来实现,方法如下:
from xml.dom import minidom
# 使用 minidom 解析
tree = minidom.parseString(xml_string)
# 重新生成 xml 字符串
xml_string = tree.toxml()
虽然让计算机多运行了一些代码,但是这样可以把问题解决掉。
最后生成的 xml 代码如下:
u'<?xml version="1.0" ?><root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'
当然还可以使用 minidom 中 tree 对象的 toprettyxml 方法把 xml 打得漂亮一点。
补充知识:Python ElementTree 导出 xml 缺少 开头声明
使用ElementTree修改完xml后,写入文件时,发现开头缺少了 <?xml version='1.0' encoding='utf-8'?>
解决办法:
在调用ElementTree的write方法写入xml时,参数里增加 encoding=‘utf-8' 以及 xml_declaration=True
et_root.write('file。xml', encoding='utf-8', xml_declaration=True)
来源:https://blog.csdn.net/q_l_s/article/details/71629804


猜你喜欢
- 用途:将UTF-8编码汉字转换为GB2312码,兼容英文和数字版权:虽说是原创,其实也参考了別人的部分算法asp源代码:<% 
- 《色彩解答》系列之一 色彩层次《色彩解答》系列之二 色彩比例我们知道在设计中有很多对比,大小的对比,形状的对比,长短的对比,多少的对比,这些
- 1、背景a、搜狗也发布了自己的人工智能 api,包括身份证ocr、名片ocr、文本翻译等API,初试感觉准确率一般般。b、基于python3
- 一、数据库编程的必备条件编程语言: 如Java、C++、C、Python等数据库: 如Oracle、MySQL、SQL Server等数据库
- 介绍NumPy是Python中用于数值计算的核心包之一,它提供了大量的高效数组操作函数和数学函数。它支持多维数组和矩阵运算,并且可以集成C/
- 1、 下载MYSQL5.1.48源码,CMAKE,VS2008 2、 安装CMAKE和VS2008,解压MYSQL5.1.48到D:\mys
- mro即 method resolution order (方法解释顺序),主要用于在多继承时判断属性的路径(来自于哪个类)。在python
- flash param参数和属性下列标记属性和参数描述了由“发布”命令创建的 HTML 代码。在编写自己的用于显示 Flash 内容的 HT
- 思路整理:1、进入心灵鸡汤网页,使用python获取心灵鸡汤内容2、登陆微信,找到需要发送的朋友3、发送获取的内容1、获取心灵鸡汤的内容如下
- 以前把守护进程与后台任务搞混了,后面看了文章才知道这两者的区别,写此文表达自己对守护进程的理解.1:什么是守护进程?所谓守护进程是一种是 L
- 目录什么是pyecharts?pyecharts安装加载折线图的绘制条形图和折线图的结合绘制漏斗图什么是pyecharts?pyechart
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 本文实例讲述了JS将滑动门改为选项卡(需鼠标点击)的实现方法。分享给大家供大家参考。具体如下:大家都知道,滑动门和选项卡在布局和结构方面几乎
- 起因前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据
- 前言在golang当中,defer代码块会在函数调用链表中增加一个函数调用。这个函数调用不是普通的函数调用,而是会在函数正常返回,也就是re
- 01 并行复制的概念 在MySQL的主从复制架构中,主库上经常会并发的执行很多SQL,只要这些SQL没有产生锁等待,
- Javascript 实现计算器:系列文章:JS 实现计算器详解及实例代码(一)Javascript 实现计算器时间功能详解及实例(二)小型
- 绘制折线图命令形如:# 常用plt.plot(x, y, linewidth = '1', label = "te
- 不用库,写了很久,一直出bug,到网上一搜,可以直接输入之后,eval(str)即可得到结果!eval程序如下:s=input("
- 定义字典并直接输出,结果输出结果中文是乱码展示d={'name':'lily','age':