Озадачился проверкой xml файла своей xsd схеме. Для этой цели использую python c модулем lxml. Код следующий:
import os
import sys
import datetime
from lxml import etree
rootDir = os.path.dirname(sys.argv[0])
scheme = '{}\\{}'.format(rootDir,'ListForRating_v03\ListForRating_v03.xsd')
pathToXML = '{}\\{}'.format(rootDir,'xml')
class Validator:
def __init__(self, xsd_path: str):
xmlschema_doc = etree.parse(xsd_path)
self.xmlschema = etree.XMLSchema(xmlschema_doc)
def validate(self, xml_path: str) -> str:
xml_doc = etree.parse(xml_path)
#result = self.xmlschema.validate(xml_doc)
try:
self.xmlschema.assert_(xml_doc)
return 'Valid! :)'
except AssertionError as e:
print(str(e))
return 'Not valid! :('
validator = Validator(scheme)
Files = os.listdir(pathToXML)
t = 'files' if len(Files) > 1 else 'file'
print('Scanning %s %s' % (len(Files), t))
timeBegin = datetime.datetime.now()
for file_name in Files:
print('{}: '.format(file_name), end='')
file_path = '{}\\{}'.format(pathToXML, file_name)
print(validator.validate(file_path))
timeEnd = datetime.datetime.now()
delta = timeEnd - timeBegin
print('Scanning complete. Total time: {} seconds'.format(delta.seconds))
Собственно все отрабатывает корректно, кроме одного. Как только находится первое несоответствие схеме на этом все заканчивается. А мне надо, чтобы были отображены все ошибки, какие есть в xml файле. Как, например, сделано в плагине xml tools для notepad++. Подскажите, пожалуйста, что поправить в коде для получения всех ошибок?
Заранее спасибо.