python中的xml

来源:互联网 发布:三层交换机网络拓扑图 编辑:程序博客网 时间:2024/05/06 20:33

一般来讲,一个引人关注的东西,总会有很多人从不同侧面去关注。在编程语言中也是如此,所以,对xml这个明星式的东西,python提供了多种模块来处理。

  • xml.dom.* 模块:Document Object Model。适合用于处理 DOM API。它能够将xml数据在内存中解析成一个树,然后通过对树的操作来操作xml。但是,这种方式由于将xml数据映射到内存中的树,导致比较慢,且消耗更多内存。
  • xml.sax.* 模块:simple API for XML。由于SAX以流式读取xml文件,从而速度较快,切少占用内存,但是操作上稍复杂,需要用户实现回调函数。
  • xml.parser.expat:是一个直接的,低级一点的基于 C 的 expat 的语法分析器。 expat接口基于事件反馈,有点像 SAX 但又不太像,因为它的接口并不是完全规范于 expat 库的。
  • xml.etree.ElementTree (以下简称 ET):元素树。它提供了轻量级的python式的API,相对于DOM,ET快了很多,而且有很多令人愉悦的API可以使用;相对于SAX,ET也有ET.iterparse提供了 “在空中” 的处理方式,没有必要加载整个文档到内存,节省内存。ET的性能的平均值和SAX差不多,但是API的效率更高一点而且使用起来很方便。

常用属性和方法总结

ET里面的属性和方法不少,这里列出常用的,供使用中备查。

Element对象

常用属性:

  • tag:string,元素数据种类
  • text:string,元素的内容
  • attrib:dictionary,元素的属性字典
  • tail:string,元素的尾形

针对属性的操作

  • clear():清空元素的后代、属性、text和tail也设置为None
  • get(key, default=None):获取key对应的属性值,如该属性不存在则返回default值
  • items():根据属性字典返回一个列表,列表元素为(key, value)
  • keys():返回包含所有元素属性键的列表
  • set(key, value):设置新的属性键与值

针对后代的操作

  • append(subelement):添加直系子元素
  • extend(subelements):增加一串元素对象作为子元素
  • find(match):寻找第一个匹配子元素,匹配对象可以为tag或path
  • findall(match):寻找所有匹配子元素,匹配对象可以为tag或path
  • findtext(match):寻找第一个匹配子元素,返回其text值。匹配对象可以为tag或path
  • insert(index, element):在指定位置插入子元素
  • iter(tag=None):生成遍历当前元素所有后代或者给定tag的后代的迭代器
  • iterfind(match):根据tag或path查找所有的后代
  • itertext():遍历所有后代并返回text值
  • remove(subelement):删除子元素

ElementTree对象

  • 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") 
0 0
原创粉丝点击