在python中使用lxml的iterparse有条件地对多个DTD进行验证

时间:2012-04-11 09:29:48

标签: python lxml dtd iterparse

我正在根据docinfo解析和验证针对多个DTD的相当大的XML(> 100MB):

parser = etree.XMLParser(recover=True)
xmlfile = etree.parse(file,parser)
if "aaa.dtd" in xmlfile.docinfo.doctype.lower():
    dtdfile= "dtds/aaa.dtd"
elif "bbb.dtd" in xmlfile.docinfo.doctype.lower():
    dtdfile= "dtds/bbb.dtd"
elif "ccc.dtd" in xmlfile.docinfo.doctype.lower():
    dtdfile= "dtds/ccc.dtd"
dtd = etree.DTD(dtdfile)
if dtd.validate(xmlfile)==True:
    do sth

我的问题是内存消耗,所以我认为我应该使用iterparse,但我找不到办法进行同样的验证。

提前致谢。

0 个答案:

没有答案