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.
_______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor