Проверка синтаксиса файлов XML - PullRequest
0 голосов
/ 09 ноября 2019

После долгих чтений я понимаю, что лучший способ проверки XML-файла - это использование XML-схемы (XSD-файл).

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

  1. Под динамическим я подразумеваю, что программа не является жестко запрограммированной
  2. Под проверкой синтаксиса я имею в виду, что она просто проверяет, соответствуют ли элементы правилам (пример: значения элемента могут быть только между числами 0 -150)

Мой язык программирования - Python, но также может быть и Java.

Заключение: Я читал о разборе с использованием ElementTree и проверке XML-файла с помощью XSD с использованием lxml, но я не хочу создавать новый XSD для каждого слегка отличающегося XML-файла, который я получаю. Я не могу найти какие-либо статьи, касающиеся проверки синтаксиса XML-файлов, используя только программирование на Python. Открыта для любых советов.

1 Ответ

0 голосов
/ 10 ноября 2019

Для начала вы сказали, что хотите, чтобы программа не была жестко закодирована. Я полагаю, вы имеете в виду, что вы не хотите, чтобы он запускал diff, чтобы проверить отсутствие различий. Вы хотите создать метод, гарантирующий, что документ xml следует «вашим правилам», который может быть документом схемы по умолчанию или просто запрограммированными правилами синтаксиса, проверенными для. Очевидно, что это можно сделать несколькими различными способами. Это сильно зависит от сложности правил, которые нужно проверить. Если у вас есть правила для объектов dog xml, у них должен быть атрибут tail, и вы хотите проверить, что их длина находится в определенном диапазоне. У вас должна быть опция с концепцией структуры xml, имеющей такие объекты, как собака, а затем вам просто нужно запрограммировать правила проверки атрибутов этих объектов. Это руководство дает очень краткие указания о том, как сделать документ XSD. https://www.w3schools.com/xml/schema_example.asp В этом документе показано, как создавать правила в файле.

<xs:simpleType name="orderidtype">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9]{6}"/>
  </xs:restriction>
</xs:simpleType>

Теперь, если вы просто хотите сделать это по-своему в python, вы можете использовать lxml для загрузки документа. Затем используйте lxml.etree.parser() для разбора правил создания для того, как каждый тип объекта должен быть отформатирован, и проверки каждого отдельного правила. Обязательно используйте все свои знания о том, какой формат и структуру XML-документов вы будете получать, чтобы свести к минимуму сложность правил, которые необходимо запрограммировать для их проверки. https://lxml.de/parsing.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...