Well, I think I'm getting close. But, I think this is similar to the problem I had when I started. This seems to create a huge data file with all information under the first item, and then again all information under the second item and so forth.
for statentityref in \ et.findall('admin/responseanalyses/analysis/analysisdata/statentityref') : print >> f, statentityref.attrib['id'] for statentityref in \ et.findall('admin/responseanalyses/analysis/analysisdata/statentityref/s tatentityref'): for statval in statentityref.findall('statval'): print >> f, statentityref.attrib['id'], '\t', statval.attrib['type'], '\t', statval.attrib['value'] I think again I may not be limiting the intended xpath. > -----Original Message----- > From: J. Cliff Dyer [mailto:[EMAIL PROTECTED] > Sent: Wednesday, April 02, 2008 3:36 PM > To: Doran, Harold > Cc: xml-sig@python.org > Subject: Re: [XML-SIG] Learning to use elementtree > > On Wed, 2008-04-02 at 15:28 -0400, Doran, Harold wrote: > > Indeed, navigating the xml is tough (for me). I have been > able to get > > the following to work. I put in "Sub Element" to indicate the new > > section of data. But, from looking at the text output, one doesn't > > know which item these sub elements belong to. I think the > solution is > > to create an index like 13965-0 to show that this is the > > subinformation from the item above it. That seems to be > where I am getting stuck. > > Although, I am open to other suggestions on how to best > represent the > > output. > > > > from xml.etree.ElementTree import ElementTree as ET > > > > filename = raw_input("Please enter the AM XML file: ") new_file = > > raw_input("Save this file as: ") > > > > # create a new file defined by the user f = open(new_file, 'w') > > > > et = ET(file=filename) > > > > for statentityref in \ > > > et.findall('admin/responseanalyses/analysis/analysisdata/statentityref > > ') > > : > > for statval in statentityref.findall('statval'): > > print >> f, statentityref.attrib['id'], '\t', > > statval.attrib['type'], '\t', statval.attrib['value'] > > > > f.write("\n\n") > > f.write("Sub Element\n\n") > > > > for statentityref in \ > > > et.findall('admin/responseanalyses/analysis/analysisdata/statentityref > > /s > > tatentityref'): > > for statval in statentityref.findall('statval'): > > print >> f, statentityref.attrib['id'], '\t', > > statval.attrib['type'], '\t', statval.attrib['value'] > > f.close() > > Do you want your second statentityref loop to be based on its > parent statentityref? If so, you need to nest it in the > original loop, and use an xpath relative to your outer > statentityref (and watch for name collisions). > > > > _______________________________________________ XML-SIG maillist - XML-SIG@python.org http://mail.python.org/mailman/listinfo/xml-sig