常见的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片段:
War, Thriller
DVD
2003
PG
10
About counter terrorist unit
原理很简单:导入包,解析树(整个导入),获得句柄,再操作。
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,里面一个个地处理。