mirror of
https://github.com/Hestia-Homes/survey-extraction.git
synced 2026-06-08 11:17:29 +00:00
43 lines
1.4 KiB
Python
43 lines
1.4 KiB
Python
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
|