可以使用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屬性來獲取詳細的驗證錯誤信息。