Newer
Older
Import / projects / LGN-IP3870 / t / orig / mmsxhtmlparser.py
from xml.sax import handler, make_parser

class MyHandler(handler.ContentHandler):

	def __init__(self):
		self.bstyle = False
		self.bbody = False
		self.tmp_tag = []
		self.xhtml_style = []
		self.xhtml_body = []

	def startDocument(self):
		#print 'Start of Document'
		pass

	def endDocument(self):
    		#print 'End of Document'
		#print self.xhtml_style
		#print self.xhtml_body
		pass

	def startElement(self, name, attrs):
    		#print 'Start Tag:', name

		if self.bbody == True:
			self.tmp_tag.append(name)
		if name == "style":
			self.bstyle = True
		elif name == "body":
			self.bbody = True


		#print 'tag1', self.tmp_tag

	def endElement(self, name):
		#print 'End Tag:', name

		if name == "style":
			self.bstyle = False
		elif name == "body":
			self.bbody = False

		if self.bbody == True:
			self.tmp_tag.remove(name)
		#print 'tag2', self.tmp_tag

	def characters(self, content):
		#print 'Location : (%s, %s)' % (self.locator.getLineNumber(), self.locator.getColumnNumber())
		#print '\tText :', content.replace('\n', '\\n')
		#print 'tag3',self.tmp_tag

		if self.bstyle == True:
			if content != '\n':
				#print 'bstyle'
				k = content.find(' ')
				attri = content[:k].strip()
				value = content[k:].strip()
				#print content[:k], "==", content[k:].strip()

				tv = value[1:-1]
				endv = tv.split(':')

				tmp_style = [ attri, endv[0].strip(), endv[1].strip() ]
				self.xhtml_style.append(tmp_style)
		elif self.bbody == True:
			if content != '\n':
				#print 'bbody'

				self.xhtml_body.append([tuple(self.tmp_tag), content])
				#print  self.xhtml_body

	def setDocumentLocator(self, locator):
		self.locator = locator

class ErrHandler(handler.ErrorHandler):
	def error(self, exception):
		print 'Error occured:::'
		#print exception

	def fatalError(self, exception):
		print 'fatalError occured:::'

	def warning(self, exception):
		print 'warning:::'


def setsmil(filename):
	h = MyHandler()
	parser = make_parser()
	parser.setContentHandler(h)
	parser.setErrorHandler(ErrHandler())
	parser.parse(filename)

	return h.xhtml_style, h.xhtml_body