python - how to use iterparse to get xml snippet -


i'm trying parse large xml kml file. inside python script have following commands:

import xml.etree.elementtree etree event, elem in etree.iterparse("tracts.kml", events=('start', 'end')):      if event == 'end' , elem.tag == '{http://www.opengis.net/kml/2.2}multigeometry':           print(elem) 

the xml looks this:

<multigeometry>      <polygon>          <altitude>          </altitude>          <coordinates>          </coordinates>      </polygon> </multigeometry> 

what want export text inside <multigeometry></multigeometry> include child tags , text inside each of them.

meaning output string looks like: <polygon>...</polygon> in string format.

elem.text assumes there values outside of childtags. want of it. how of it?

thanks.

if want complete string of xml element, can use elementtree.tostring() function . please note returns byte string, (encoded using encoding passed method , default encoding 'us-ascii' ) , need decode() value actual string.

example -

>>> import xml.etree.elementtree et >>> r = et.fromstring('''<multigeometry> ...      <polygon> ...          <altitude> ...          </altitude> ...          <coordinates> ...          </coordinates> ...      </polygon> ... </multigeometry>''') >>> et.tostring(r) b'<multigeometry>\n     <polygon>\n         <altitude>\n         </altitude>\n         <coordinates>\n         </coordinates>\n     </polygon>\n</multigeometry>' >>> print(et.tostring(r).decode()) <multigeometry>      <polygon>          <altitude>          </altitude>          <coordinates>          </coordinates>      </polygon> </multigeometry> 

Comments