Hi, I'm trying to use xml.sax (from xml.sax.handler import ContentHandler) to processes the following data:
<?xml version="1.0" encoding="UTF-8"?> <report name="yahoo" masterAccountID="666831" masterAccountName="CraftShowSuccess.Com-US" dateStart="2008-02-24-0600" dateEnd="2008-02-24-0600" booksClosedTimestamp="2008-02-25T01:15:00.000-0600" booksClosed="true" createDate="2008-02-25T02:00:27.041-0600" sortColumn="cost" sortOrder="desc"> <totals><analytics numImpr="951" ctr="0.0" numClick="0" cost="0.0" averagePosition="9.305993690851736"/></totals> <row adName="Craftshows" adGrpName="Craftshows" cmpgnName="craftshows" tacticName="Paid Placement" qualityScore="2"><analytics numImpr="951" ctr="0.0" numClick="0" cost="0.0" averagePosition="9.305993690851736"/ ></row> </report> I've figured out how to access the attributes in "row" - but I want to also access the "analytics" child element. I've tried: class YahooHandler(ContentHandler): ccountNum) def startElement(self, name, attrs): if name == 'row' or name == 'analytics': self.campaign = attrs.get('cmpgnName',"") self.adgroup = attrs.get('adGrpName',"") self.headline = attrs.get('adName',"") self.imps = attrs.get('numImpr',None) self.clicks = attrs.get('numClick',None) self.cost = attrs.get('cost',"") def endElement(self, name): if name == 'row': if self.campaign not in self.data: self.data[self.campaign] = {} if self.adgroup not in self.data[self.campaign]: self.data[self.campaign][self.adgroup] = [] self.data[self.campaign][self.adgroup].append({'campaign': self.campaign, 'adgroup': self.adgroup, 'headline': self.headline, 'imps': self.imps, 'clicks': self.clicks, 'ctr': self.ctr, 'cost': self.cost, }) print self.data But it the data comes out as seperate dictionaries - I want the analytics and the row elements in one dictionary. What am I doing wrong? Thanks! -- http://mail.python.org/mailman/listinfo/python-list