Python使用ElementTree处理xml文件

在Python中一般情况我们应该使用ElementTree处理xml文件,ElementTree从Python
2.5开始成为标准模块。一般情况指的是: XML 文件大小适中,对性能要求并非非常严格。

下面讲解如何通过ElementTree来操作XML;

1.引入库

需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement

try:
    import xml.etree.cElementTree as ET
except ImportError:
    import xml.etree.ElementTree as ET

即优先使用效率更高的cElementTree,cElementTree 是 ElementTree 的 Cython 实现,速度更快,消耗内存更少,性能上更占优势,在实际使用过程中应该尽量优先使用 cElementTree。

2.读入并解析

tree = ElementTree(file=xmlfile)

root = tree.getroot()

读入后,tree是ElementTree的类型,获取xml根结点使用getroot()方法;

XML示例文件:

<item sid=‘1712‘ name = ‘大CC‘ >

<a id=1></a>

<a id=2></a>

</item>

3.获取儿子结点

查找Element的所有子结点:

AArry = item.findall(‘a‘)

也可使用getchildren():

childs = item.getchildren()

for subItem in childs:

print subItem.get(‘id‘)

4.插入儿子结点

方法一:

item = Element("item", {‘sid‘ : ‘1713‘, ‘name‘ : ‘ityouhui‘})

root.append(item)

方法二:

SE(root,‘item‘,{‘sid‘:‘1713‘,‘name‘:‘ityouhui‘})

法一的好处是插入之后可以对item继续操作。法二是写法上简单,其中SE就是SubElement,在引入处做了声明;

5.操作属性

获取Element的某个属性值(eg:获取item的 name)

print root.find(‘item/name‘).text

print item.get(‘name‘)

获取Element所有属性

print item.items() # [(‘sid‘, ‘1712‘), (‘name‘, ‘大CC‘)]

print item.attrib # {‘sid‘: ‘1712‘, ‘name‘: ‘大CC‘}

本文讲解如何通过ElementTree来操作XML;

1.引入库

需要用到3个类,ElementTree,Element以及建立子类的包装类SubElement

from xml.etree.ElementTree import ElementTree

from xml.etree.ElementTree import Element

from xml.etree.ElementTree import SubElement as SE

2.读入并解析

tree = ElementTree(file=xmlfile)

root = tree.getroot()

读入后,tree是ElementTree的类型,获取xml根结点使用getroot()方法;

XML示例文件:

<item sid=‘1712‘ name = ‘大CC‘ >

<a id=1></a>

<a id=2></a>

</item>

3.获取儿子结点

查找Element的所有子结点:

AArry = item.findall(‘a‘)

也可使用getchildren():

childs = item.getchildren()

for subItem in childs:

print subItem.get(‘id‘)

4.插入儿子结点

方法一:

item = Element("item", {‘sid‘ : ‘1713‘, ‘name‘ : ‘ityouhui‘})

root.append(item)

方法二:

SE(root,‘item‘,{‘sid‘:‘1713‘,‘name‘:‘ityouhui‘})

法一的好处是插入之后可以对item继续操作。法二是写法上简单,其中SE就是SubElement,在引入处做了声明;

5.操作属性

获取Element的某个属性值(eg:获取item的 name)

print root.find(‘item/name‘).text

print item.get(‘name‘)

获取Element所有属性

print item.items() # [(‘sid‘, ‘1712‘), (‘name‘, ‘大CC‘)]

print item.attrib # {‘sid‘: ‘1712‘, ‘name‘: ‘大CC‘}

时间: 2024-10-25 14:51:57

Python使用ElementTree处理xml文件的相关文章

python使用ElementTree解析XML文件

一.将XML网页保存到本地 要加载XML文件首先应该将网页上的信息提取出来,保存为本地XML文件.抓取网页信息可以python的urllib模块. 代码如下: from urllib import urlopen url = "http://********/**" resp = urlopen(url).read() f = open('文件保存路径', 'w') f.write(resp) f.close() 二.解析XML文件 python有许多可以用来解析XML文件的函数,在这

python xml.etree.ElementTree解析xml文件获取节点

<?xml version = "1.0" encoding = "utf-8"?> <root> <body name="lyc"> <age>110</age> </body> <body name = "l" age = "10"> </body> </root> ###############

Python中用ElementTree解析XML

[XML基本概念介绍] XML 指可扩展标记语言(eXtensible Markup Language). XML 被设计用来传输和存储数据. 概念一: <foo> # foo元素的起始标签 </foo> # foo元素的结束标签 # note: 每一个起始标签必须有对应的结束标签来闭合, 也可以写成<foo/> 概念二: <foo> # 元素可以嵌套到任意参次 <bar></bar> # bar元素为foo元素的子元素 </f

python cookbook第三版学习笔记七:python解析csv,json,xml文件

CSV文件读取: Csv文件格式如下:分别有2行三列. 访问代码如下: f=open(r'E:\py_prj\test.csv','rb') f_csv=csv.reader(f) for f in f_csv:     print f 在这里f是一个元组,为了访问某个字段,需要用索引来访问对应的值,如f[0]访问的是first,f[1]访问的是second,f[2]访问的是third. 用列索引的方式很难记住.一不留神就会搞错.可以考虑用对元组命名的方式 这里介绍namedtuple的方法.

Python使用ElementTree解析XML【译】

19.7. xml.etree.ElementTree — The ElementTree XML API 源代码: Lib/xml/etree/ElementTree.py Element类型是一种灵活的容器对象,用于在内存中存储层次数据结构.可以说是list和dictionary的交叉. 注意: xml.etree.ElementTree 模块对含有恶意代码的数据是不安全的.如果你想处理不信任的数据请使用 XML vulnerabilities. 每个element都有一系列相关属性: 标签

python解析GBK格式xml文件

xml文件 <?xml version="1.0" encoding="GBK"?> <records serial_number="1"> <record id="1" name="admin" password="admin" auth="1" email="" receivedMail="0"

python 使用ElementTree解析xml

以country.xml为例,内容如下: <?xml version="1.0"?> <data> <country name="Liechtenstein"> <rank updated="yes">2</rank> <year>2008</year> <gdppc>141100</gdppc> <neighbor name=&qu

【Python】用Python打开csv和xml文件

1 #coding=utf-8 2 import csv 3 with open("F:\\script\\py_scripts\\test2.csv","r") as csvfile: 4 read = csv.reader(csvfile) 5 for i in read: 6 print(i) 注意:csv文件生成的时候需要另存Excel文件选择csv格式,这样不会报错.

python中用ElementTree.iterparse()读取xml文件中的多层节点

我在使用Python解析比较大型的xml文件时,为了提高效率,决定使用iterparse()方法,但是发现根据网上的例子:每次if event == 'end':之后elem.clear()或者是每次 if elem.tag == '':之后clear(),都只能去到当前标签的相关内容,如果想继续读取得到标签的子标签,则会返回为空,也就是取不到. 其实iterparse()方法的原理是当遇到标签的“>”符号时触发start,当遇到标签的结束标志是会触发end,比如: <item> <