38 lines
1.3 KiB
Python
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
|