From: Jim H. <Ha...@ma...> - 2003-04-18 22:59:13
|
This code snippet is my first experience writing my own classes. I guess I'm not quite getting the OO concept yet. Can someone tell me how I can pass (story_id,date_received) from AttrHandler back to NewsItemMonitor so that I can call stuff_story_in_database? I thought about using the global statement but that does not seem right. Any help is appreciated, thanks in advance. class AttrHandler(ContentHandler): def startElement(self, name, attr): if name =='ne-id': story_id = attr.get('storyid', '') else: story_id = 'unknown' if name == 'ne-datereceived': date_received = attr.get('norm', '') else: date_received = 'unknown' class NewsItemMonitor(NewsItemListener): def itemAdded(self,newsItem): self.data = newsItem.getRawData() file = StringIO(self.data) parser.parse(file) self.tokens = mylex.lexxml(self.data) body = get_body(self.tokens) stuff_story_in_database(body, story_id, date_received) # THIS WONT WORK! def get_body(list): for index in range(len(list)): if list[index] == '<body.content>': start_index = index if list[index] == '</body.content>': end_index = index return "".join(list[start_index:end_index]) def stuff_story_in_database(data, story_id, date_received): print story_id, date_received if __name__ == '__main__': parser = xml.sax.make_parser() handler = AttrHandler() parser.setContentHandler(handler) liveNews = com.newsedge.live.toolkit.receiver.LiveNews() liveNews.addNewsItemListener(NewsItemMonitor()) |