2016-02-18 1 views
1

Имейте огромный .xml-файл. Не нашел решение для my previos question Решил использовать interparse() для получения узла. Проблема: не удается извлечь дочерние узлы.получить детей между <start> и/<end> узлы, использующие interparse()

.xml образец

<node id="3828373736" lat="54.6849130" lon="25.2850783" version="1" timestamp="2015-11-10T10:52:34Z" changeset="35211986" uid="1241595" user="Runis"> 
<tag k="highway" v="traffic_sign"/> 
<tag k="traffic_sign" v="LT:552"/> 
</node> 
<node id="3828373737" lat="54.6848815" lon="25.2851614" version="1" timestamp="2015-11-10T10:52:34Z" changeset="35211986" uid="1241595" user="Runis"> 
<tag k="highway" v="traffic_sign"/> 
<tag k="traffic_sign" v="LT:553"/> 
</node> 

Часть моего кода:

import xml.etree.ElementTree as etree 
file=('file.osm') 
context=etree.iterparse(file, events=('start', 'end', 'start-ns', 'end-ns')) 

for event, elem in context: 
if event == "start" and elem.tag == "node": 
    ID=elem.get('id') 
    lat=elem.get('lat') 
    lon=elem.get('lon')  
    print ID,lat,lon 
    elem.clear() 

ответ

0

Может быть, я нашел решение. Было бы здорово, если бы вы делились своими идеями по оптимизации этого кода.

import xml.etree.ElementTree as etree 
file=('filel.osm') 
context=etree.iterparse(file) 

for event, elem in context: 
if elem.tag == "node":  
    ID=elem.get('id') 
    lat=elem.get('lat') 
    lon=elem.get('lon') 
    #print ID,lat,lon 
    for child in elem:   
     key=child.get('k') 
     val=child.get('v') 
     print ID,lat,lon,key,val    
     child.clear() 
    elem.clear() 

 Смежные вопросы

  • Нет связанных вопросов^_^