Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- class XMLCollector(object):
- def __init__(self):
- self.level = 0
- self.data = []
- def startTag(self, name, fields):
- currentLevel = self.data
- for i in range(self.level):
- currentLevel = currentLevel[-1][-1]
- if not name.endswith("/"):
- self.level += 1
- currentLevel.append([name, fields, []])
- def tagData(self, data):
- currentLevel = self.data
- for i in range(self.level):
- currentLevel = currentLevel[-1][-1]
- if len(currentLevel) > 0 and isinstance(currentLevel[-1], str):
- currentLevel[-1] = currentLevel[-1] + data
- else:
- currentLevel.append(data)
- def endTag(self, name):
- self.level -= 1
- if __name__ == "__main__":
- import pprint
- from xml.parsers import expat
- xmlTags = XMLCollector()
- xmlFile = open("format.xml", "rb")
- eXMLParse = expat.ParserCreate()
- eXMLParse.StartElementHandler = xmlTags.startTag
- eXMLParse.EndElementHandler = xmlTags.endTag
- eXMLParse.CharacterDataHandler = xmlTags.tagData
- eXMLParse.ParseFile(xmlFile)
- pprint.pprint(xmlTags.data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement