XMLSchema:是否可以计算无效文档的有效性(例如,百分比)?

时间:2013-04-18 12:57:22

标签: xml xsd lxml xmllint

我在Python中使用lxml来根据XML Schema定义验证许多XML文档。很多这些文件都没有验证 - 而且目前它们并没有被预期 - 但是如果我能够计算它们的有效性(百分比)用于报告目的,那将是有用的。如果能够提供有用的统计信息,我可以使用xmllint或其他命令行工具。

1 个答案:

答案 0 :(得分:1)

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实际上是tree结构(例如total_elements / total_errors),也可以采取更复杂的衡量标准。