Advertisement
ijontichy

xmltest.py

May 14th, 2012
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.19 KB | None | 0 0
  1. #!/usr/bin/env python3
  2.  
  3. class XMLCollector(object):
  4.    
  5.     def __init__(self):
  6.         self.level = 0
  7.         self.data  = []
  8.  
  9.     def startTag(self, name, fields):
  10.         currentLevel = self.data
  11.        
  12.         for i in range(self.level):
  13.             currentLevel = currentLevel[-1][-1]
  14.  
  15.         if not name.endswith("/"):
  16.             self.level += 1
  17.  
  18.         currentLevel.append([name, fields, []])
  19.  
  20.     def tagData(self, data):
  21.         currentLevel = self.data
  22.        
  23.         for i in range(self.level):
  24.             currentLevel = currentLevel[-1][-1]
  25.  
  26.         if len(currentLevel) > 0 and isinstance(currentLevel[-1], str):
  27.             currentLevel[-1] = currentLevel[-1] + data
  28.         else:
  29.             currentLevel.append(data)
  30.        
  31.        
  32.     def endTag(self, name):
  33.         self.level -= 1
  34.  
  35.  
  36.  
  37. if __name__ == "__main__":
  38.     import pprint
  39.     from xml.parsers import expat
  40.  
  41.     xmlTags = XMLCollector()
  42.     xmlFile = open("format.xml", "rb")
  43.     eXMLParse = expat.ParserCreate()
  44.  
  45.     eXMLParse.StartElementHandler = xmlTags.startTag
  46.     eXMLParse.EndElementHandler = xmlTags.endTag
  47.     eXMLParse.CharacterDataHandler = xmlTags.tagData
  48.  
  49.     eXMLParse.ParseFile(xmlFile)
  50.  
  51.     pprint.pprint(xmlTags.data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement