xml.etree.ElementTree
xml.etree.ElementTree
可以用来处理xml文件,对xml文件进行分析
后面的内容转自:http://www.cnblogs.com/ifantastic/archive/2013/04/12/3017110.html 简介 Element类型是一种灵活的容器对象,用于在内存中存储结构化数据。 [注意]xml.etree.ElementTree模块在应对恶意结构数据时显得并不安全。 每个element对象都具有以下属性: 1. tag:string对象,表示数据代表的种类。 2. attrib:dictionary对象,表示附有的属性。 3. text:string对象,表示element的内容。 4. tail:string对象,表示element闭合之后的尾迹。 5. 若干子元素(child elements)。 <tag attrib1=1>text</tag>tail 1 2 3 4 创建元素的方法有Element或者SubElement(),前者称作元素的构建函数(constructor),用以构建任一独存的元素;后者称作元素的制造函数(factory function),用以制造某一元素的子元素。 有了一串元素之后,使用ElementTree类来将其打包,把一串元素转换为xml文件或者从xml文件中解析出来。 若想加快速度,可以使用C语言编译的API xml.etree.cElementTree。 导入ElementTree 在使用xml.etree.ElementTree时,一般都按如下导入: try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET XML是中结构化数据形式,在ET中使用ElementTree代表整个XML文档,并视其为一棵树,Element代表这个文档树中的单个节点。 ET对象具有多种方法从不同来源导入数据,如下: #从硬盘的xml文件读取数据 import xml.etree.ElementTree as ET tree = ET.parse('country_data.xml') #载入数据 root = tree.getroot() #获取根节点 #从字符串读取数据 root = ET.fromstring(country_data_as_string) [注意]fromstring()是直接获取string对象中的根节点,因此以上root其实是一个Element。 作为一个Element对象,本身是具有子元素,因此可以直接对Element进行迭代取值: >>> for child in root: ... print child.tag,child.attrib ... country {'name': 'Liechtenstein'} country {'name': 'Singapore'} country {'name': 'Panama'} 或者直接使用索引寻找子节点: >>> root[0][1].text '2008' Element中的遍历与查询 Element.iter(tag=None):遍历该Element所有后代,也可以指定tag进行遍历寻找。 Element.findall(path):查找当前元素下tag或path能够匹配的直系节点。 Element.find(path):查找当前元素下tag或path能够匹配的首个直系节点。 Element.text: 获取当前元素的text值。 Element.get(key,default=None):获取元素指定key对应的属性值,如果没有该属性,则返回default值。 Element对象 class xml.etree.ElementTree.Element(tag,attrib={},**extra) tag:string,元素代表的数据种类。 text:string,元素的内容。 tail:string,元素的尾形。 attrib:dictionary,元素的属性字典。 #针对属性的操作 clear():清空元素的后代、属性、text和tail也设置为None。 get(key,default=None):获取key对应的属性值,如该属性不存在则返回default值。 items():根据属性字典返回一个列表,列表元素为(key,value)。 keys():返回包含所有元素属性键的列表。 set(key,value):设置新的属性键与值。 #针对后代的操作 append(subelement):添加直系子元素。 extend(subelements):增加一串元素对象作为子元素。#python2.7新特性 find(match):寻找第一个匹配子元素,匹配对象可以为tag或path。 findall(match):寻找所有匹配子元素,匹配对象可以为tag或path。 findtext(match):寻找第一个匹配子元素,返回其text值。匹配对象可以为tag或path。 insert(index,element):在指定位置插入子元素。 iter(tag=None):生成遍历当前元素所有后代或者给定tag的后代的迭代器。#python2.7新特性 iterfind(match):根据tag或path查找所有的后代。 itertext():遍历所有后代并返回text值。 remove(subelement):删除子元素。 ElementTree对象 class xml.etree.ElementTree.ElementTree(element=None,file=None) element如果给定,则为新的ElementTree的根节点。 _setroot(element):用给定的element替换当前的根节点。慎用。 # 以下方法与Element类中同名方法近似,区别在于它们指定以根节点作为操作对象。 find(match) findall(match) findtext(match,default=None) getroot():获取根节点. iter(tag=None) iterfind(match) parse(source,parser=None):装载xml对象,source可以为文件名或文件类型对象. write(file,encoding="us-ascii",xml_declaration=None,default_namespace=None,method="xml")
模块方法
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |