def _parse_categories(self, doc): categories = [] for el in doc.getElementsByTagName('category'): cat = Category(self) cat.category_id = int(self._get_child_node_text(el, "category_id")) cat.category_name = self._get_child_node_text(el, "category_name") cat.level = int(self._get_child_node_text(el, "level")) if cat.level == 2: parent_category_id_string = self._get_child_node_text(el, "parent_category_id") cat.parent_category_id = int(parent_category_id_string) if parent_category_id_string else None cat.parent_category_name = self._get_child_node_text(el, "parent_category_name") else: cat.parent_category_id = None cat.parent_category_name = None categories.append(cat) return categories
def _parse_category_tree(self, els, parent_category_id, parent_category_name): categories = [] for el in els: if el.nodeType == el.ELEMENT_NODE: cat = Category(self) cat.category_id = int(self._get_child_node_text(el, "category_id")) cat.category_name = self._get_child_node_text(el, "category_name") cat.level = int(self._get_child_node_text(el, "level")) cat.parent_category_id = parent_category_id cat.parent_category_name = parent_category_name subcat_el = self._get_child_element(el, "subcategories") if (subcat_el): cat.subcategories = self._parse_category_tree(subcat_el.childNodes, cat.category_id, cat.category_name) categories.append(cat) return categories