from etl.utils.logger import Logger import logging from xml.dom.minidom import parse import os from etl.fileReader.reportType import ReportType class xmlReader(): def __init__(self, file_path): self.source_path = file_path self.logger = Logger(name='xmlReader', level=logging.INFO).get_logger() self.xml_obj = None self.type = None self.get_xml_obj() def get_xml_obj(self): try: if not os.path.exists(self.source_path): self.logger.error(f"File not found: {self.source_path}") return None with open(self.source_path, 'r', encoding='utf-8') as file: self.xml_obj = parse(file) self.get_type() return self.xml_obj except Exception as e: self.logger.error(f"Failed to parse XML file {self.source_path}: {e}") self.xml_obj = None return self.xml_obj def get_type(self): xmlHeaderName = self.xml_obj.documentElement.tagName xmlHeaderName = xmlHeaderName.lower() if xmlHeaderName == 'RdSap-Report'.lower(): self.type = ReportType.LIG_XML elif xmlHeaderName == "SurveyRec".lower(): self.type = ReportType.RDSAP_XML elif xmlHeaderName == "ImportExportRecord".lower(): self.type = ReportType.FULLSAP_XML else: pass return self.type