如何使用xmlschema高效解析XSD(无XML文件)并避免重复读取?
解析XSD文件重复读取的性能优化问题
原始代码
import xmlschema data_schema = xmlschema.XMLSchema("myXSD.xsd") data = data_schema.to_dict("myXSD.xsd")
问题描述
你需要解析大量XSD文件,当前代码两次传入XSD路径生成字典,导致脚本启动到GUI可用需等待近10秒,性能分析显示耗时集中在XSD的初始读取和重复解析阶段。你知道to_dict本该传入XML文件,推测传入XSD会重复读取文件,尝试传入None无效,希望找到无需重复读取的方法。
优化方案
直接利用已加载的XMLSchema对象生成字典,无需再次读取XSD文件:
import xmlschema # 仅加载解析一次XSD data_schema = xmlschema.XMLSchema("myXSD.xsd") # 从已解析的schema对象直接导出字典 data = data_schema.as_dict()
说明
XMLSchema初始化时已经完成了XSD的读取、校验和解析,所有结构信息都存储在对象中,无需重复操作。as_dict()方法会直接序列化已解析好的schema结构,完全跳过二次读取和解析的耗时步骤。to_dict()的设计用途是解析XML实例文档,而非XSD文件,所以传入None或XSD路径都不符合其预期用法,前者会报错,后者会触发不必要的重复解析。
内容的提问来源于stack exchange,提问作者fm_user8
相关产品推荐
相关产品推荐

