Python入门:常用模块—xml模块

xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单

xml的格式如下,就是通过<>节点来区别数据结构的:

<data>

``<country name``=``"Liechtenstein"``>

``<rank updated``=``"yes"``>``2``<``/``rank>

``<year updated``=``"yes"``>``2010``<``/``year>

``<gdppc>``141100``<``/``gdppc>

``<neighbor direction``=``"E" name``=``"Austria" /``>

``<neighbor direction``=``"W" name``=``"Switzerland" /``>

``<``/``country>

``<country name``=``"Singapore"``>

``<rank updated``=``"yes"``>``5``<``/``rank>

``<year updated``=``"yes"``>``2013``<``/``year>

``<gdppc>``59900``<``/``gdppc>

``<neighbor direction``=``"N" name``=``"Malaysia" /``>

``<``/``country>

``<country name``=``"Panama"``>

``<rank updated``=``"yes"``>``69``<``/``rank>

``<year updated``=``"yes"``>``2013``<``/``year>

``<gdppc>``13600``<``/``gdppc>

``<neighbor direction``=``"W" name``=``"Costa Rica" /``>

``<neighbor direction``=``"E" name``=``"Colombia" /``>

``<``/``country>

<``/``data>

xml协议在各个语言里的都 是支持的,在python中可以用以下模块操作xml

import xml.etree.ElementTree as ET

tree ``= ET.parse(``"xmltest.xml"``)

root ``= tree.getroot()

print``(root.tag)

# 遍历xml文档

for child ``in root:

``print``(child.tag, child.attrib)

``for i ``in child:

``print``(i.tag, i.text)

# 遍历year节点

for node ``in root.``iter``(``'year'``):

``print``(node.tag, node.text)

# 修改和删除xml文档内容

# 修改

for node ``in root.``iter``(``'year'``):

``new_year ``= int``(node.text) ``+ 1

``node.text ``= str``(new_year)

``node.``set``(``'updated'``, ``'yes'``)

tree.write(``"xmltest.xml"``)

# 删除

for country ``in root.findall(``'country'``):

``rank ``= int``(country.find(``'rank'``).text)

``if rank > ``50``:

``root.remove(country)

tree.write(``'output.xml'``)

自己创建xml文档

new_xml ``= ET.Element(``"namelist"``)

name ``= ET.SubElement(new_xml, ``"name"``, attrib``=``{``"enrolled"``: ``"yes"``})

age ``= ET.SubElement(name, ``"age"``, attrib``=``{``"checked"``: ``"no"``})

sex ``= ET.SubElement(name, ``"sex"``)

sex.text ``= '33'

name2 ``= ET.SubElement(new_xml, ``"name"``, attrib``=``{``"enrolled"``: ``"no"``})

age ``= ET.SubElement(name2, ``"age"``)

age.text ``= '19'

et ``= ET.ElementTree(new_xml) ``# 生成文档对象

et.write(``"test.xml"``, encoding``=``"utf-8"``, xml_declaration``=``True``)

ET.dump(new_xml) ``# 打印生成的格式

相关推荐
小陈工2 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
A__tao6 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
研究点啥好呢6 小时前
Github热门项目推荐 | 创建你的像素风格!
c++·python·node.js·github·开源软件
xiaotao1316 小时前
第九章:Vite API 参考手册
前端·vite·前端打包
午安~婉6 小时前
Electron桌面应用聊天(续)
前端·javascript·electron
迷藏4947 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
彧翎Pro7 小时前
基于 RO1 noetic 配置 robosense Helios 32(速腾) & xsense mti 300
前端·jvm
明日清晨7 小时前
python扫码登录dy
开发语言·python
小码哥_常7 小时前
解锁系统设置新姿势:Activity嵌入全解析
前端
bazhange7 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab