Source code for qa_analytics_insights.xml_loader

"""Copyright (c) 2023, Aydin Abdi.

This module is responsible for loading XML files.
"""

from typing import Optional, cast
from xml.etree import ElementTree as ET


[docs] class XMLLoader: """Responsible for loading XML file.""" def __init__(self, xml_path: str) -> None: """Responsible for loading XML files into XMLParser. Args: xml_path: Path to the XML file. """ self.xml_path = xml_path self._tree: Optional[ET.ElementTree[ET.Element]] = None self._root: Optional[ET.Element] = None @property def tree(self) -> ET.ElementTree: # pragma: no cover """Returns the XML tree. Returns: XML tree. """ if not self._tree: self._tree = ET.parse(self.xml_path) return cast(ET.ElementTree, self._tree) @property def root(self) -> ET.Element: # pragma: no cover """Returns the XML root. Returns: XML root. """ if not self._root: self._root = self.tree.getroot() return cast(ET.Element, self._root)