<html><body><div style="color:#000; background-color:#fff; font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:14px"><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">Good day,</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">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 defined</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">below. XNode class define an xml element which has an ID , a tag, a text value, children element and a parent element</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                   class XNode(object):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                            def __init__(self, ID ="", elmName="", elmValue="", parent=None):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                 self.ID = ID</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                 self.elmName=elmName</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                 self.elmValue=elmValue</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                 self.childs=[]</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                self.parent=parent</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                           def  getPath(self):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                  if self.parent is None:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                       return self.elmName</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                 else:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                                       return self.parent.getPath()+"/"+ self.elmName</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">I  wrote a program that<b class="" style=""> parse </b>an XML document ,  <b class="" style="">convert</b> the  document  into the tree like structure defined above and then <b class="" style="">return</b> the parsed result to</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">the program that call it.  The program shown below.</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">import xml.sax</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">import XMLnode as n</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">class XML_Handler ( xml.sax.ContentHandler):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    def __init__(self, root):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        self.root = root</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        self.tmp =  n.XNode()</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    def startElement(self, tag, attributes):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        #if self.root != None:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        if self.root is not None:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            if len(self.tmp.childs) < 10:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                ID = self.tmp.ID +"." + "0" + str( len(self.tmp.childs))</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            else:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">                ID = self.tmp.ID +"." + str( len(self.tmp.childs))</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">             </div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            self.tmp.childs.append( n.XNode(ID,tag,"",self.tmp))</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">             </div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            self.tmp= self.tmp.childs[len(self.tmp.childs)-1]</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        else:</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            print "0", tag, self.tmp.getPath()</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            self.root= n.XNode("0", tag,"",None)</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">            self.tmp=self.root</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    def characters(self, content):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        self.tmp.elmValue += content.strip()</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    def endElement(self, tag):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        self.tmp= self.tmp.parent</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    def parse(self, f):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        xml.sax.parse(self,f)</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">        return self.root</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">if ( __name__ == "__main__"):</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">     parser = xml.sax.make_parser()</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">     parser.setFeature(xml.sax.handler.feature_namespaces, 0)</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">     root = None</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    Handler = XML_Handler(root)</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    parser.setContentHandler( Handler )</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    treRoot= parser.parse("Movies.xml")</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">    print treRoot</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">Can somebody help me answer the following question</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">My Question is how do I return the parsed result through the <b id="yiv1279292017yui_3_16_0_1_1418795494860_17414" class="" style="">root instance variable </b>of  of XML_Handler class</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">I try to do it but i always get<b id="yiv1279292017yui_3_16_0_1_1418795494860_24538" class="" style=""> None</b> as answer</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">I am using Window 7 professional and python 2.7</div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style=""><br class="" style=""></div><div id="yiv1279292017yui_3_16_0_1_1418795494860_4252" dir="ltr" class="" style="">Thank you  </div><div id="yui_3_16_0_1_1418795494860_28334" class="" style=""><br class="" style=""></div></div></body></html>