<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>