Skip to content

Instantly share code, notes, and snippets.

@danielsomerfield
Created February 20, 2018 03:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danielsomerfield/8e29bfbc5046689c0d138080acd36b85 to your computer and use it in GitHub Desktop.
Save danielsomerfield/8e29bfbc5046689c0d138080acd36b85 to your computer and use it in GitHub Desktop.
import xml.sax
class Handler(xml.sax.ContentHandler):
def __init__(self):
super().__init__()
self.current_id = 0
self.stack = []
def startElement(self, name, attrs):
parent_id = self.get_parent_id()
new_row = { # this should probably be a class
'tag': name,
'name': attrs['name'],
'id': self.current_id,
'parent': parent_id,
'text': ''
}
self.stack.append(new_row)
self.current_id = self.current_id + 1
def endElement(self, name):
self.create_row(self.stack.pop())
@staticmethod
def create_row(row):
print(row)
pass
def characters(self, c):
pass
def get_parent_id(self):
if len(self.stack) > 0:
parent_id = self.stack[-1]['id']
else:
parent_id = None
return parent_id
parser = xml.sax.make_parser()
parser.setContentHandler(Handler())
parser.parse(open("text.xml", "r"))
import xml.sax
class Handler(xml.sax.ContentHandler):
def __init__(self):
super().__init__()
self.current_id = 0
self.stack = []
def startElement(self, name, attrs):
parent_id = self.get_parent_id()
new_row = { # this should probably be a class
'tag': name,
'name': attrs['name'],
'id': self.current_id,
'parent': parent_id,
'text': ''
}
self.stack.append(new_row)
self.current_id = self.current_id + 1
def endElement(self, name):
self.create_row(self.stack.pop())
@staticmethod
def create_row(row):
print(row)
pass
def characters(self, c):
pass
def get_parent_id(self):
if len(self.stack) > 0:
parent_id = self.stack[-1]['id']
else:
parent_id = None
return parent_id
parser = xml.sax.make_parser()
parser.setContentHandler(Handler())
parser.parse(open("text.xml", "r"))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment