У меня есть XML-файл и XML-схема в другом файле, и я хотел бы убедиться, что мой XML-файл соответствует этой схеме. Как мне это сделать в Python?
Я бы предпочел использовать стандартную библиотеку, но при необходимости могу установить сторонний пакет.
python
xml
validation
xsd
Эли Кортрайт
источник
источник
Что касается решений "чистого питона": в индексе пакетов перечислены:
источник
Пример простого валидатора на Python3 с использованием популярной библиотеки lxml
Установка lxml
Если вы получаете сообщение об ошибке типа «Не удалось найти функцию xmlCheckVersion в библиотеке libxml2. Установлена ли libxml2?» , попробуйте сначала сделать это:
Самый простой валидатор
Создадим простейший validator.py
затем напишите и запустите main.py
Немного ООП
Чтобы проверить более одного файла, нет необходимости создавать XMLSchema. каждый раз объект , поэтому:
validator.py
Теперь мы можем проверить все файлы в каталоге следующим образом:
main.py
Дополнительные параметры читайте здесь: Проверка с помощью lxml
источник
Пакет PyXB по адресу http://pyxb.sourceforge.net/ генерирует проверочные привязки для Python из документов схемы XML. Он обрабатывает почти все конструкции схемы и поддерживает несколько пространств имен.
источник
Есть два способа (на самом деле их больше), чтобы это сделать.
1. используя lxml
pip install lxml
>> xmllint --format --pretty 1 --load-trace --debug --schema /path/to/my_schema_file.xsd /path/to/my_xml_file.xml
источник
Вы можете легко проверить XML-файл или дерево на соответствие XML- схеме (XSD) с помощью пакета xmlschema Python . Это чистый Python, доступный на PyPi и не имеющий многих зависимостей.
Пример - проверить файл:
Метод вызывает исключение, если файл не проверяется на соответствие XSD. Затем это исключение содержит некоторые сведения о нарушении.
Если вы хотите проверить много файлов, вам нужно загрузить XSD только один раз:
Если вам не нужно исключение, вы можете проверить его следующим образом:
В качестве альтернативы xmlschema напрямую работает с файловыми объектами и деревьями XML в памяти (созданными с помощью xml.etree.ElementTree или lxml). Пример:
источник
lxml предоставляет etree.DTD
из тестов на http://lxml.de/api/lxml.tests.test_dtd-pysrc.html
источник