xml_status_reader/app.py

38 lines
1.3 KiB
Python

import lxml.etree
from lxml import etree
from aktion_status import AktionsStatus
class App:
def __init__(self):
pass
def read_xml(self, path, hide_empty=True):
with open(path, encoding="utf-8") as xml_file:
head = xml_file.readline()
xml = xml_file.read()
root = etree.fromstring(xml)
for data in root.getchildren():
for elem in data.getchildren():
self.read_element(elem, hide_empty=hide_empty)
def read_element(self, element, sign="", hide_empty=True):
element_text = element.text
if hide_empty and not element_text or isinstance(element, lxml.etree._Comment) or isinstance(element, lxml.etree._ProcessingInstruction):
pass
elif element.tag.find("AKTION") > -1:
num = int(element_text)
print(sign, self.clean_xmlns(element.tag), AktionsStatus.get_status(num))
else:
print(sign, self.clean_xmlns(element.tag), element.text if element.text else "")
if len(element.getchildren()) > 0:
for el in element.getchildren():
self.read_element(el, sign+"\t")
def clean_xmlns(self, tag_text):
if tag_text and tag_text.startswith("{"):
return tag_text.split("}")[1]
return tag_text