# from __future__ import absolute_import import parsers, factories try: import xml.etree.cElementTree as ET except ImportError: import xml.etree.ElementTree as ET def read_file(path, element_key): # get an iterable record_counter = 0 context = ET.iterparse(path, events=("start", "end")) # turn it into an iterator context = iter(context) # get the root element event, root = context.__next__() #the factory inl_factory = factories.INLFactory() for event, element in context: if 'end' in event: if element_key in element.tag: #enter the processing here record_counter += 1 for field in element: print(field.tag, field.attrib) #cleaned element is a tree inl_parser = parsers.INLXmlParser(element) cleaned_element = inl_parser.clearxml() entity = inl_factory.get_entity(cleaned_element) #test print the entity if entity != None: entity.print_entity() #TODO analys and upload the entity # import pdb; pdb.set_trace() print(record_counter, cleaned_element.getroot().tag, '@@@', cleaned_element.getroot().attrib, '@@@', cleaned_element.getroot().text) element.clear() if __name__ == '__main__': read_file(r"C:/Users/Ilsar/Documents/datahack/NLI-nnl10.xml", 'record')