Good day,
Please I am new in using python to write program. I am trying to parse an XML 
document using sax parse  and store the parsed result in a tree like 
definedbelow. XNode class define an xml element which has an ID , a tag, a text 
value, children element and a parent element
                   class XNode(object):
                            def __init__(self, ID ="", elmName="", elmValue="", 
parent=None):
                                 self.ID = ID                                 
self.elmName=elmName                                 self.elmValue=elmValue     
                            self.childs=[]                                
self.parent=parent

                           def  getPath(self):                                  
if self.parent is None:                                       return 
self.elmName                                 else:                              
         return self.parent.getPath()+"/"+ self.elmName
I  wrote a program that parse an XML document ,  convert the  document  into 
the tree like structure defined above and then return the parsed result tothe 
program that call it.  The program shown below.

import xml.saximport XMLnode as n

class XML_Handler ( xml.sax.ContentHandler):
    def __init__(self, root):        self.root = root        self.tmp =  
n.XNode()
    def startElement(self, tag, attributes):        #if self.root != None:
        if self.root is not None:
            if len(self.tmp.childs) < 10:                ID = self.tmp.ID +"." 
+ "0" + str( len(self.tmp.childs))            else:                ID = 
self.tmp.ID +"." + str( len(self.tmp.childs))                         
self.tmp.childs.append( n.XNode(ID,tag,"",self.tmp))             
            self.tmp= self.tmp.childs[len(self.tmp.childs)-1]        else:      
      print "0", tag, self.tmp.getPath()            self.root= n.XNode("0", 
tag,"",None)            self.tmp=self.root
    def characters(self, content):        self.tmp.elmValue += content.strip()
    def endElement(self, tag):        self.tmp= self.tmp.parent

    def parse(self, f):        xml.sax.parse(self,f)        return self.root

if ( __name__ == "__main__"):
     parser = xml.sax.make_parser()     
parser.setFeature(xml.sax.handler.feature_namespaces, 0)     root = None    
Handler = XML_Handler(root)    parser.setContentHandler( Handler )    treRoot= 
parser.parse("Movies.xml")    print treRoot
Can somebody help me answer the following questionMy Question is how do I 
return the parsed result through the root instance variable of  of XML_Handler 
classI try to do it but i always get None as answerI am using Window 7 
professional and python 2.7
Thank you  
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to