从Python lxml库获取更详细的错误信息

时间:2017-12-08 17:43:38

标签: python xml xsd lxml

我使用lxml来验证针对XSD的XML文件。工作良好。但是,当缺少元素时,它不会提供有关哪个元素缺失的信息。即从对XSD进行验证的有效XML开始,如果您随后删除了一个必需元素,它会按预期方式给出错误。

然而,不是指出特定元素作为缺失元素,而是给出了一个通用的" ..缺少的子元素。预期是[候选元素列表]之一"。这个错误有点用处,但是,我不明白为什么如果它给出了XSD,它无法确切地告诉哪个必需元素丢失了。有没有办法在这方面让它变得更聪明并提供这些信息?

我的脚本大纲如下:

from lxml import etree
xmlschema_doc = etree.parse('c:/xmlvalidation/schema.xsd')
xmlschema = etree.XMLSchema(xmlschema_doc)
doc = etree.parse(''c:/xmlvalidation/test.xml')
try:
    xmlschema.assertValid(doc)
    print('XML valid, schema validation ok.')

except etree.DocumentInvalid as err:
    print(err)

0 个答案:

没有答案