status

草稿

清风 & liz; 100%

PCS214 ElementTree

概述

ElementTree是Python的XML处理模块,它提供了一个轻量级的对象模型.它是在Python2.5以后成为Python标准库的一部分,但在Python 2.4之前需要单独安装.

使用

先看一个最简单的例子,

   1 # -*- coding: utf-8 -*-
   2 import xml.etree.ElementTree as ET
   3 
   4 # 创建一个根节点root,并设置其标签为"html"
   5 root = ET.Element("html")
   6 # 创建根节点的一个子节点head,并设置其标签为"head"
   7 head = ET.SubElement(root, "head")
   8 # 创建节点head的一个子节点title,并设置其标签为"title",设置其内容为"Title"
   9 title = ET.SubElement(head, "title")
  10 title.text = "Title"
  11 
  12 # 创建根节点的一个子节点body,并设置其标签为"body",设置bgcolor属性为#ffffff,设置其内容为"Hello, World!"
  13 body = ET.SubElement(root, "body")
  14 body.set("bgcolor", "#ffffff")
  15 body.text = "Hello, World!"
  16 
  17 # 将这个根节点包裹在ElementTree对象中,并且保存为XML格式文档
  18 tree = ET.ElementTree(root)
  19 tree.write("hello.xhtml")

使用Element新建XML节点,并设置相应值,然后将其封装在ElementTree中,构成最终XML树保存到本地文件中.运行这个程序,可以看到在当前目录下生成了一个hello.xhtml文件,用firefox或其他浏览器打开,可以看到下图:

使用ElementTree的parser()函式可以快速加载一个完整的XML文档并生成一个ElementTree对象,例如:

   1 # -*- coding: utf-8 -*-
   2 import xml.etree.ElementTree as ET
   3 
   4 # 使用parse()将XML文档加载并返回ElementTree对象
   5 tree = ET.parse("hello.xhtml")
   6 
   7 # 寻找head节点下title节点的值
   8 print tree.findtext("head/title")
   9 
  10 # 使用getroot()函式返回根节点
  11 root = tree.getroot()
  12 
  13 # ...接下来可以做些其他操作
  14 
  15 # 保存为本地XML文档
  16 tree.write("out.xml")

ElementTree还提供了很多类和函式,类有:

  • ElementTree:经常使用的元素结构封装类.

  • TreeBuilder:普通元素结构构造器.

  • XMLTreeBuilder:对XML源数据构造成XML结构树,它是基于expat解析器实现的

函式有: