Thanks, I think I have it working. On 1/27/11, Karim <karim.liat...@free.fr> wrote: > > id is a tag so it is a OBJECT Element with attributes accessible by > dictionnary x.attrib[key] and x.text for tag content text. > > canonical string representation of your Element object: Obj.id :> <Element > 'result' at [mem addr] > And root is also an Element but the parent of id and name childs => > composite pattern. > For result use iterator as below (not tested but should be ok): > > *_/#Parsing:/_ > > doc = ElementTree() > doc.parse(xmlFile)* > > *_/#iteration over tag element:/_ > > ids = [] > names =[] > for result in doc.iter('result'): > idElem = result.find('id') > *** nameElem = result.find('name')** > * ids.append(idElem.text) > names.append(nameElement.text) > > final = zip(ids, names) > * > > You are not obliged to provide the full XPATH. Etree search for you. > > Regards > Karim > > On 01/27/2011 11:23 PM, Alex Hall wrote: >> Hi all, >> I am using, and very much enjoying, the ElementTree library. However, >> I have hit a problem. Say I have something along the lines of: >> >> <service> >> <message>Message from Service</message> >> <version>1.0</version> >> <list> >> <result> >> <id>1</id> >> <name>result 1</name> >> </result> >> <result> >> <id>2</id> >> <name>result 2</name> >> </result> >> </list> >> </service> >> >> In my ResultSet class, I parse this to get the text of elements like >> message or version. Then, I use root.findall("list/result") and >> iterate over the result, passing to a second function which parses the >> passed-in elements into Result objects. For example: >> >> all=root.findall("list/result") >> for i in all: >> self.mylist.append(Obj().parse(i)) >> >> In Obj.parse(), the element passed in is treated like this: >> >> def parse(data): >> root=data.getroot() >> self.id=root.find("id").text >> self.name=root.find("name).text >> >> Printing the results of the above through Obj.id or Obj.name gives me >> odd behavior: >> print Obj.id :> <Element 'result' at [mem addr] >> print self.id :> None >> >> What is going on? Does the root change when I call find()? Why would >> an Element object get used when I clearly say to use the text of the >> found element? TIA. >> > >
-- Have a great day, Alex (msg sent from GMail website) mehg...@gmail.com; http://www.facebook.com/mehgcap _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor