我使用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)