libxml2是一个很强大的处理XML文件的Python模块,通过C写成,这里介绍了一下基本的资料,安装,下载和基本指令,还有一个libxml2造成的内存泄露的处理方式。
官方网址:
http://xmlsoft.org/
具体的下载地址,埋的很深,至少我花了一段时间才找到,这里直接给出win32下的Python模块下载地址:
http://xmlsoft.org/sources/win32/python/
根据自己的Python版本下载就行。
官方网站上给的操作信息是在少的可怜,只有单单一页的Python API介绍
http://xmlsoft.org/python.html
后来找了一些大神的博客才算零零碎碎的筹齐需要的知识点:
http://mohsinpage.wordpress.com/2011/02/03/xpath-libxml2-in-python/
http://ukchill.com/technology/getting-started-with-libxml2-and-python-part-1/
http://ukchill.com/technology/getting-started-with-libxml2-and-python-part-2/
这几就介绍一下最简单的操作:
[python]
import libxml2
doc = libxml2.parseFile(filename) #可以使用parseDoc代替parseFile,两者的区别是DOC处理已经读进进程的文件,File是能自己读取文件,所以只需要提供文件名。
ctxt = doc.xpathNewContext()
record_nodes = ctxt.xpathEval(‘/*’) #括号中的XPATH,这是寻找的是根目录下的所有NODE。 xpathEval寻找结果给出的是一个x列表,如xrange(10)生成的内容。
for node in record_nodes:
name = node.name #node的名字
content = node.content #node的内容
sous-nodes = node.xpathEval(‘*’) #node下面的子node,同处理根目录的原理一下进行处理。
…
#释放内存
if doc:
doc.freeDoc()
[/python]
由于libxml2在读取xml文本后不会自动释放内存,因此会出现内存泄露问题,这个困扰了我好久,一直以为是Python的程序问题,,找了一大堆Python程序的内存管理资料,但是最后才发现是libxml2的问题。所以上面代码中给出了释放内存的指令,非常非常重要!
ps python下管理内存模块gc
[python]
import gc
a=[‘abc’ for x in range(1000**5)]
del a
gc.collect()
[/python]
发表回复