我需要讀取大型XML(65 Mb),根據xsd對其進行驗證,並對其運行XPath查詢。下面,我已經給出了一個lxml版本。運行查詢需要很長時間(超過5分鐘),但驗證看起來非常快。具有XPath支持的快速python XML驗證器
我有幾個問題。性能卓越的Python程序員如何使用lxml編寫程序?其次,如果lxml不適合工作,還有什麼?你可以給一個代碼片段嗎?
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。這基本上是一個性能測試。 – Sumant
感謝您發佈代碼:) – Viet