可以使用lxml的etree模块中的XMLSchema和RelaxNG类来捕获XML文档的验证错误。下面是一个示例代码:
from lxml import etree
# 定义XML Schema
schema = etree.XMLSchema(etree.parse('schema.xsd'))
# 解析XML文档
xml_doc = etree.parse('document.xml')
# 验证XML文档
try:
schema.assertValid(xml_doc)
print("XML document is valid.")
except etree.DocumentInvalid as e:
print("XML document is invalid:")
for error in e.error_log:
print(error)
在上面的示例中,我们首先定义了一个XML Schema,并解析了要验证的XML文档。然后,我们使用XMLSchema类的assertValid方法来验证XML文档。如果XML文档是无效的,会抛出DocumentInvalid异常,我们可以通过error_log属性来获取详细的验证错误信息。