python解析xml文件ElementTree,

  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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: