""" XML helper functions. """ from typing import Optional from typing import Tuple from lxml import etree from dbdeploy.base import config def validate( xml_schema_file_path: str, xmlfile: str) -> Tuple[bool, Optional[str]]: """Validate file using given schema.""" with open(xml_schema_file_path, 'r') as f: schema_root = etree.XML(f.read().encode()) schema = etree.XMLSchema(schema_root) xmlparser = etree.XMLParser(schema=schema, encoding="utf-8") try: etree.fromstring(xmlfile.encode(), xmlparser) return True, None except etree.XMLSchemaError as err: return False, str(err) except etree.XMLSyntaxError as err: return False, str(err) def get_schema_file_path(flow_name: str) -> Optional[str]: """Get input file schema.""" return config.XML_SCHEMA_FILE.get(flow_name)