2015-01-04 5 views
0

У меня есть код, который анализирует XML-файл и сохраняет его как csv. Я могу сделать это двумя способами: одним путем ручной загрузки xml-файла, а затем его синтаксического анализа, а другой - с помощью XML-файла напрямую с помощью ET.fromstring и последующего анализа. Когда я иду напрямую, я получаю ошибки данных, которые, по-видимому, являются проблемой целостности. Я пытаюсь включить xml-загрузку в код, но я не совсем уверен, что лучший способ приблизиться к этому.Проблемы с разбором xml

import xml.etree.ElementTree as ET 
import csv 
import urllib 

url = 'http://www.capitalbikeshare.com/data/stations/bikeStations.xml' 
connection = urllib.urlopen(url) 
data = connection.read() 

#I need code here!!! 

tree = ET.parse('bikeStations.xml') 
root = tree.getroot() 

#for child in root: 
    #print child.tag, child.attrib 

locations = [] 

for station in root.findall('station'): 
    name = station.find('name').text 
    bikes = station.find('nbBikes').text 
    docks = station.find('nbEmptyDocks').text 
    time = station.find('latestUpdateTime').text 
    sublist = [name, bikes, docks, time] 
    locations.append(sublist) 
    #print 'Station:', name, 'has', bikes, 'bikes and' ,docks, 'docks' 

#print locations 

s = open('statuslog.csv', 'wb') 
w = csv.writer(s) 
w.writerows(locations) 
s.close() 

f = open('filelog.csv', 'ab') 
w = csv.writer(f) 
w.writerows(locations) 
f.close() 

ответ

1

Что вам нужно:

root = ET.fromstring(data) 

и опустить линию: tree = ET.parse('bikeStations.xml')

В ответ от connection.read() возвращает Струнные, вы можете сразу прочитать строку XML с помощью fromstring, вы можете узнать больше от HERE.

+0

Вот и все! Спасибо за вашу помощь @ Anzel! – pedrohobo

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