【发布时间】:2011-01-19 03:37:04
【问题描述】:
我需要读取一个大型 XML (65 Mb),根据 xsd 对其进行验证,并在其上运行 XPath 查询。下面,我给出了一个 lxml 版本。运行查询需要很长时间(超过 5 分钟),但验证似乎很快。
我有几个问题。注重性能的 Python 程序员如何使用 lxml 编写程序?其次,如果 lxml 不适合这份工作,还有什么?可以给个代码sn-p吗?
import sys
from datetime import datetime
from lxml import etree
start = datetime.now()
schema_file = open("library.xsd")
schema = etree.XMLSchema(file=schema_file)
parser = etree.XMLParser(schema = schema)
data_file = open(sys.argv[1], 'r')
tree = etree.parse(data_file, parser)
root = tree.getroot()
data_file.close()
schema_file.close()
end = datetime.now()
delta = end-start
print "Parsing time = ", delta
start = datetime.now()
name_list = root.xpath("book/author/name/text()")
print ("Size of list = " + str(len(name_list)))
end = datetime.now()
delta = end-start
print "Query time = ", delta
【问题讨论】:
-
请注意,65 Mb 数据文件的列表(作者姓名)的预期大小为 320,000。这基本上是一个性能测试。
-
+1 感谢您发布代码 :)
标签: python xml validation xpath xsd