Python3 में एक साधारण सत्यापनकर्ता का एक उदाहरण लोकप्रिय लाइब्रेरी का उपयोग कर lxml
स्थापना lxml
pip install lxml
यदि आपको कोई त्रुटि मिलती है जैसे "पुस्तकालय libxml2 में फ़ंक्शन xmlCheckVersion नहीं मिल सका है। क्या libxml2 स्थापित है?" , इसे पहले करने का प्रयास करें:
# Debian/Ubuntu
apt-get install python-dev python3-dev libxml2-dev libxslt-dev
# Fedora 23+
dnf install python-devel python3-devel libxml2-devel libxslt-devel
सबसे सरल सत्यापनकर्ता
चलो सरलतम सत्यापनकर्ता बनाएं
from lxml import etree
def validate(xml_path: str, xsd_path: str) -> bool:
xmlschema_doc = etree.parse(xsd_path)
xmlschema = etree.XMLSchema(xmlschema_doc)
xml_doc = etree.parse(xml_path)
result = xmlschema.validate(xml_doc)
return result
उसके बाद मेनफ्रेम लिखें और चलाएं
from validator import validate
if validate("path/to/file.xml", "path/to/scheme.xsd"):
print('Valid! :)')
else:
print('Not valid! :(')
OOP का थोड़ा सा
एक से अधिक फ़ाइल को मान्य करने के लिए, हर बार XMLSchema ऑब्जेक्ट बनाने की आवश्यकता नहीं है , इसलिए:
validator.py
from lxml import etree
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) -> bool:
xml_doc = etree.parse(xml_path)
result = self.xmlschema.validate(xml_doc)
return result
अब हम निर्देशिका में सभी फाइलों को इस प्रकार मान्य कर सकते हैं:
main.py
import os
from validator import Validator
validator = Validator("path/to/scheme.xsd")
# The directory with XML files
XML_DIR = "path/to/directory"
for file_name in os.listdir(XML_DIR):
print('{}: '.format(file_name), end='')
file_path = '{}/{}'.format(XML_DIR, file_name)
if validator.validate(file_path):
print('Valid! :)')
else:
print('Not valid! :(')
अधिक विकल्पों के लिए यहां पढ़ें: एलएक्सएमएल के साथ सत्यापन