3

条件付きで、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 を使用する必要があると考えましたが、同じ種類の検証を行う方法が見つかりません。

前もって感謝します。

4

0 に答える 0