python解析xml文件ElementTree,
一、环境技术简介
在Python标准库中,有两种方法可以实现ElementTree。一个是xml.etree.ElementTree的纯Python实现,另一个是稍微快一点的xml.etree.cElementTree,如果不知道环境中是否存在cElementTree,可以通过以下方式导入:
try:import XML . etree . celementtreeasetexpectimporterror 3360 import XML . etree . element tree a set
但是从Python 3.3开始,默认使用cElementTree来提高速度,但是在之前的版本中,为了提高代码的兼容性,建议使用上面的代码。
第二,解析xml
假设我们现在有下面的xml
一个
2008
141100
四
2011
59900
六十八
2011
13600
有两种方法可以分析xml。
1.从文件解析xml文件
import . etree . celementtreeasettree=et . element tree(file= doc 1 . XML )#加载数据
Get root=tree.getroot根节点
2.从内存字符串中解析xml
root=et . from string(country _ data _ as _ string)).
第二种方法可以直接到达根节点。
三。数据存取
对于根中的儿童:printchild.tag。
国家{ 名称 : 列支敦士登 }
国家{ 名称 : 新加坡 }
国家{ 名称:巴拿马 }
或者,直接使用索引查找子节点。
根[0][1]。文本 2008
或者,您可以使用xpath方法进行遍历,但是有些xpath方法支持它。有关支持的xpath的信息,请参考[4]
“root.find all”。/国家/邻居’)
[,]
4.正在处理xml流
下面的过程在从xml文件中读取xml时对其进行分析,并在遇到标记的开头或结尾时返回相应的事件。
对于事件,eleminet。ITER parse(sys . argv[2]):if event== end :if elem . tag= location 和elem.texex
count=1 elem . clear(# discard the element
程序将一直检查到标签结束,并对指定的标签进行计数。最后一个elem.clear()保证分析后尽快释放内存。
动词(verb的缩写)元素对象
class XML . etree . element tree . element(tag,attrib={},**extra)).
由tag:string元素表示的数据类型。
text:text:string元素的内容。
Tail:字符串元素的尾部形状。
Attrib:字典元素的attrib:dictionary。
#对属性的操作
Clear(空元素、属性、文本和尾部的后代也设置为None。
获取get(key,default=None) key对应的属性值,如果不存在则返回默认值。
Items))根据属性字典返回(key,value)的列表元素。
Kys))返回包含所有元素的属性键列表。
Set(key,value)设置新的属性键和值。
#对后代的操作
添加append的直接子元素(子元素)。
Extend(子元素)添加一组元素对象作为子元素。#python2.7的新特性
查找(匹配)查找第一个匹配的子元素。匹配对象可以是标签或路径。
匹配将搜索所有匹配的子元素。匹配对象可以是标签或路径。
Findtext(match)首先查找匹配的子元素,然后返回其文本值。匹配的对象是标签或路径。
Insert(index,element)在指定位置插入子元素。
Iter(tag=none)生成迭代器来遍历当前元素的所有后代或特定标记的后代。#python2.7的新特性
Iterfind(match)根据标签或路径查找所有后代。
Itertext()遍历所有后代并返回文本值。
Remove(子元素)删除子元素。
不及物动词ElementTree对象
class XML . etree . element tree . element tree(element=None,file=None)
如果给定了元素,则它是新元素树的根节点。
_setroot(element):用给定的元素替换当前根节点。慎用。
#以下方法类似于Element类中同名的方法,只是它们将根节点指定为操作对象。
查找(匹配)
查找全部(匹配)
findtext(匹配,默认值=无)
iter(标签=无)
匹配项
Parse(source,parser=None)加载xml对象,源可以是文件名或文件类型对象。
Getroot()获取根节点。
write(file,encoding=us-ascii ,xml_declaration=None,default_namespace=None,method=xml )
七。模块方法——用于生成xml文件
1.创建一个特殊的元素,并通过标准序列化使它表示一个注释。注释可以是字节字符串或unicode。
ET。注释(文本=无)
2.生成元素树并通过sys.stdout输出elem可以是元素树,也可以是单个元素。此方法最好仅用于调试。
电子转储
3 .文本是包含XML数据的字符串。类似于XML()方法,它返回一个元素实例。
ET.fromstring(文本)
4.从字符串的序列对象中解析xml文档。默认的解析器是XMLParser,它返回一个元素实例。在V2.7中添加新属性
ET.fromstringlist(sequence,parser=None)
5.检查它是否是元素对象。
ET.iselement(元素)
6.将包含xml数据的文件或文件对象增量分析到元素树中,并报告进度。事件是一个报告列表。如果忽略,将只报告结束事件。
注意iterparse()只有看到开始标签的符号才会抛出开始事件,所以当时已经定义了属性,但是当时还没有定义text和tail属性,同样的子元素也没有定义,所以可能不会显示。如果你想要完整的元素,请寻找结束事件。
ET.iterparse(源,事件=无,解析器=无)
7.将文件或字符串解析成元素树。
ET.parse(源,解析器=无)
8.这个方法将创建一个特殊的元素,它被序列化为一个xml处理命令。
ET。处理指令(target,text=None)
9.注册名称空间前缀。此注册是全局有效的,任何给定的前缀或命名空间uri映射关系都将被删除。V2.7新属性
ET.register_namespace(前缀,uri)
10.子元素工厂,创建一个元素实例并将其附加到一个已知节点。
ET。子元素(parent,tag,attrib={},**extra)
11.生成一个字符串来表示xml的元素,包括所有子元素。是元素实例,方法是“xml”、“html”、“text”。返回包含xml数据的字符串。
ET.tostring(元素,编码=us-ascii ,方法=xml )
12.生成一个字符串来表示代表xml的元素,包括所有子元素。是元素实例,方法是“xml”、“html”、“text”。返回包含xml数据的字符串列表。V2.7新增属性
ET.tostringlist(元素,编码=us-ascii ,方法=xml )
13.从字符串常量解析xml片段。返回一个元素实例。
ET。XML(文本,解析器=无)
14.解析字符串常量中的xml片段,并返回一个字典来将元素的id映射到自身。
ET。XMLID(text,parser=None)
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。