常见的XML编程接口有DOM和SAX。在Python中,有三种方法解析XML:SAX、DOM和ElementTree (Python 3)。
SAX (simple API for XML ) python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。
DOM(Document Object Model) 将XML数据在内存中解析成一个树,通过对树的操作来操作XML。
ElementTree(元素树) ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。
下面代码仅演示Python 2.7.*里通过DOM来操作XML。
首先是XML片段:
<?xml version="1.0" encoding="UTF-8"?> <collection shelf="Arthur's Collection"> <drama title="24"> <type>War, Thriller</type> <format>DVD</format> <year>2003</year> <rating>PG</rating> <stars>10</stars> <description>About counter terrorist unit</description> </drama>原理很简单:导入包,解析树(整个导入),获得句柄,再操作。
import xml.dom.minidom DOMTree = xml.dom.minidom.parse("TVDramas.xml") cc = DOMTree.documentElement操作也超简单:
dramas = cc.getElementsByTagName("drama") for drama in dramas: print "*****DRAMA*****" if drama.hasAttribute("title"): print "Title: %s" % drama.getAttribute("title") type = drama.getElementsByTagName('type')[0] print "Type: %s" % type.childNodes[0].data句柄 getElementsByTagName,里面一个个地处理。