1. 写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 字符串:

1
2
3
4
5
# 第一种
tree.write('result.xml', encoding='utf-8')
# 第二种
xml_string = etree.tostring(root)
# xml_string 就是 xml 字符串了

但是第二种有一个问题,就是它没有

1
<?xmlversion="1.0"?>

这个头部定义内容:

1
'<root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'

怎么办呢?

有一个办法是使用 minidom 来实现,方法如下:

1
2
3
4
5
from xml.dom import minidom
# 使用 minidom 解析
tree =minidom.parseString(xml_string)
# 重新生成 xml 字符串
xml_string = tree.toxml()

虽然让计算机多运行了一些代码,但是这样可以把问题解决掉。

最后生成的 xml 代码如下:

1
u'<?xmlversion="1.0"?><root><head><title>Well Dola!</title></head><body>I love Dola!</body></root>'

2. 读xml

ElementTree在Python标准库中有两种实现:一种是纯Python实现的,如xml.etree.ElementTree,另一种是速度快一点的xml.etree.cElementTree。注意:尽量使用C语言实现的那种,因为它速度更快,而且消耗的内存更少。

1)调用parse()方法,返回解析树

try:import xml.etree.cElementTree as ET
except ImportError:import xml.etree.ElementTree as ETtree = ET.parse("country.xml")  # <class 'xml.etree.ElementTree.ElementTree'>
root = tree.getroot()           # 获取根节点 <Element 'data' at 0x02BF6A80>

2)调用from_string(),返回解析树的根元素

import xml.etree.ElementTree as ET
data = open("country.xml").read()
root = ET.fromstring(data)   # <Element 'data' at 0x036168A0>

3)调用ElementTree类ElementTree(self, element=None, file=None)  # 这里的element作为根节点

import xml.etree.ElementTree as ET
tree = ET.ElementTree(file="country.xml")  # <xml.etree.ElementTree.ElementTree object at 0x03031390>
root = tree.getroot()  # <Element 'data' at 0x030EA600>

解析过程:

导入ElementTree,import xml.etree.ElementTree as ET解析Xml文件找到根节点:直接解析XML文件并获得根节点,tree = ET.parse('country_data.xml') root = tree.getroot()解析字符串,root = ET.fromstring(country_data_as_string)遍历根节点可以获得子节点,然后就可以根据需求拿到需要的字段了。
try: import xml.etree.cElementTree as ET
except ImportError: import xml.etree.ElementTree as ET
import sys,os

获取文件的根结点

tree = ET.parse(filename.xml)
root = tree.getroot() 

获取所有为object的元素

root.findall('object')

获取object中为item的元素

ojbect.find('item')

读取item元素里面的内容

print item.text

获取属性值

print item.get['src'] 或 item['src']

主要方法:

  • Element.text=value可以直接修改其text属性。
  • Element.tail=value可以直接修改其tail属性。
  • Element.set(key, vlaue)可以添加新的attrib。
  • Element.append(subelement)可以添加新的子元素。
  • Element.extend(subelements)添加子元素的列表(参数类型是序列)。
  • Element.remove(subelement)可以删除子元素

参考:

https://www.cnblogs.com/zqchen/articles/3936805.html

https://www.cnblogs.com/hupeng1234/p/7262371.html

https://blog.csdn.net/a464057216/article/details/54915241

https://blog.csdn.net/q_l_s/article/details/71629804

python利用ElementTree读写xml相关推荐

  1. python 使用ElementTree解析xml

    python 使用ElementTree解析xml 本博客转载自:https://www.cnblogs.com/hupeng1234/p/7262371.html 昨天在做解析xml的工作,试了两种 ...

  2. python使用ElementTree解析XML文件

    一.将XML网页保存到本地 要加载XML文件首先应该将网页上的信息提取出来,保存为本地XML文件.抓取网页信息可以python的urllib模块. 代码如下: from urllib import u ...

  3. python使用minidom读写xml

    1. xml简介 xml解析方法有两种标准: SAX和DOM. 1.1 SAX SAX(Simple API for XML)是基于事件处理的,当XML文档顺序读入时,每次遇到一个元素都会触发相应的事 ...

  4. cpythonjava解释xml_详解python使用lxml操作xml格式文件

    python利用lxml读写xml格式的文件 之前在转换数据集格式的时候需要将json转换到xml文件,用lxml包进行操作非常方便. 1. 写xml文件 a) 用etree和objectify fr ...

  5. python etree创建xml_利用 Python ElementTree 生成 xml的实例

    Python 处理 xml 文档的方法有很多,除了经典的 sax 和 dom 之外,还有一个 ElementTree. 首先 import 之: from xml.etree import Eleme ...

  6. python解析xml文件elementtree_Python中使用ElementTree解析XML示例

    [XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. 概念一: 复制代码 代码如下: # foo元素的起始标签 ...

  7. excel python插件_利用 Python 插件 xlwings 读写 Excel

    Python 通过 xlwings 读取 Excel 数据 去年底公司让我做设备管理,多次委婉拒绝,最终还是做了.其实我比较喜欢技术.做管理后发现现场没有停机率统计,而原始数据有,每次要自己在Exce ...

  8. python类库31[使用minidom读写xml]

    一 python提供的xml支持 2种工业标准的xml解析方法-SAX和DOM.SAX(simple API for XML),是基于事件处理的,当XML文档顺序地读入时,每次遇到一个元素会触发相应的 ...

  9. Python ElementTree 解析 xml文件

    文章目录 一.xml文件结构 二.基础解析 1.加载文档 2.获取根元素 3.根元素的属性 4.遍历其直接子元素 5.通过索引值来访问特定的子元素 查找需要的元素 三.支持通过XPath查找元素 四. ...

最新文章

  1. djang-模型层(model)--添加,查询,修改
  2. 你的代码(软件)安全吗?【信息图】
  3. Java Collections.emptyList() 方法的使用及注意事项
  4. Theano 中文文档 0.9 - 6. 更新Theano
  5. php 基础入门篇之前言
  6. SVN篇:Shell脚本实现SVN启动,停止,重启
  7. 在复杂度o(n)的要求下找到n个数的中位数(n为奇数)_啊这,一道找中位数的算法题把东哥整不会了…...
  8. VS2010编译:_WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)
  9. 傻瓜进销存怎么样?收费吗?
  10. [Vmware卸载] Vmware12卸载
  11. Web前端面试常见问题
  12. 《道德经》和《圣经》中的“道”
  13. 假如王思聪是个程序员...
  14. c语言开发桌面应用合适吗,什么编程语言比较适合开发桌面应用程序?
  15. python微信群发itchat
  16. 迅雷磁盘缓存设置过高会影响其它网络应用软件的速度
  17. jme-旋转的双子星
  18. PTA 循环结构 7-3 简写转全称
  19. 计算机组成原理——指令系统(课程笔记)
  20. 一个纯技术程序员的求职心酸历程

热门文章

  1. Warframe圣殿突袭打法配卡详解
  2. python 中的butter函数
  3. 云物大智题库--云计算
  4. 微信餐饮小程序有必要开发吗
  5. 认识植物 - 桫椤(蕨类植物之王植物活化石)
  6. e.getMessage()
  7. MBA-day6数学-应用题-工程问题-习题
  8. 医疗行业邮件服务器架设方案
  9. 电感式DC/DC升压原理
  10. Spring框架之AOP详解(带实战详细步骤)