Подтвердить что ты не робот

Проверка XML (.xsd) на схему

У меня есть XML файл, и у меня есть XML-схема. Я хочу проверить файл на эту схему и проверить, соблюдает ли она это. Я использую python, но я открыт для любого языка, если нет такой полезной библиотеки в python.

Какими будут мои лучшие варианты здесь? Я буду беспокоиться о том, как быстро я смогу запустить это.

4b9b3361

Ответ 1

Определенно lxml.

Определите XMLParser с предопределенной схемой, загрузите файл fromstring() и поймайте любые ошибки схемы XML:

from lxml import etree

def validate(xmlparser, xmlfilename):
    try:
        with open(xmlfilename, 'r') as f:
            etree.fromstring(f.read(), xmlparser) 
        return True
    except etree.XMLSchemaError:
        return False

with open(schema_file, 'r') as f:
    schema_root = etree.XML(f.read())

schema = etree.XMLSchema(schema_root)
xmlparser = etree.XMLParser(schema=schema)

filenames = ['input1.xml', 'input2.xml', 'input3.xml']
for filename in filenames:
    if validate(xmlparser, filename):
        print "%s validates" % filename
    else:
        print "%s doesn't validate" % filename

Ответ 2

Фрагмент python хорош, но альтернативой является использование xmllint:

xmllint -schema sample.xsd --noout sample.xml