我有一些要验证的 XML 文件,我必须使用 Python 进行验证。我尝试使用 lxml 的 XSD 对其进行验证。但我只收到一个首先发生的错误,但我需要所有错误和不匹配...
我有一些要验证的 XML 文件,我必须使用 Python 来验证。我尝试使用 lxml 的 XSD 来验证它。但我只得到一个错误,它首先发生,但我需要 XML 文件中的所有错误和不匹配。有什么方法可以设法使用 lxml 获取所有错误的列表吗?或者还有其他 Python 解决方案吗?
使用 XMLSchema 库,您可以采用以下 iter_errors
方法: https://xmlschema.readthedocs.io/en/latest/api.html?highlight=iter_errors#xmlschema.XMLSchemaBase.iter_errors
这是我的代码(Python 3):
def get_validation_errors(xml_file, xsd_uri='example.xsd'):
xml_string = xml_file.read().decode('utf-8')
dir_path = os.path.dirname(os.path.realpath(__file__))
xsd_path = os.path.join(dir_path, xsd_uri)
schema = xmlschema.XMLSchema(xsd_path)
validation_error_iterator = schema.iter_errors(xml_string)
for idx, validation_error in enumerate(validation_error_iterator, start=1):
print(f'[{idx}] path: {validation_error.path} | reason: {validation_error.reason}')