我在
Python中使用lxml来根据XML Schema定义验证大量XML文档.很多这些文件都没有验证 – 而且目前它们并没有被预期 – 但是如果我能够计算它们的有效性(百分比)用于报告目的,那将是有用的.我有能力使用xmllint或其他命令行工具,如果能够提供有用的统计数据.
解决方法
lxml解析器提供了一种在尝试解析文档时获取
a list of the errors的方法.将它与解析器的
recover
keyword argument结合起来就可以得到这样的结果:
# Warning,untested,may not work parser = etree.XMLParser(recover=True) it_would_be_a_tree = etree.parse(your_xml_data,parser) total_errors = len(parser.error_log)
然后,您可以计算total_errors表示的文件的百分比.您可以使用天真的度量,例如每行错误或每个字符的错误,没有任何问题.如果it_would_be_a_tree实际上是树结构(例如,total_elements / total_errors),则也可以采用更复杂的度量.