При преобразовании XML в KML Как исправить ошибку AttributeError: у объекта 'NoneType' нет атрибута 'tag' при построении списка - PullRequest
0 голосов
/ 21 мая 2019

Когда я пытаюсь преобразовать XML в CSV (в конечном итоге в КМ) L, я получаю AttributeError: у объекта 'NoneType' нет атрибута 'tag', когда я пытаюсь создать список функций XML.

Iпопробовал советы здесь и различные вопросы переполнения стека безрезультатно.Я думаю, что это может иметь какое-то отношение к форматированию XML-канала?

# Load xml to kml library
import simplekml
# Loading URL libraries
import urllib.request
# Importing functions from URL Libraries
from urllib.request import Request, urlopen
# Loading CSV Creation Library
import csv
# Loading xml Library
import xml.etree.ElementTree as ET

# URL to website Containing XML Feed
req = urllib.request.urlopen('https://www.atxfloods.com/dashboard/phpsqlajax_genxml.php')
print('URL', req)

# Parsing XML Feed
tree = ET.parse(req)
print('Tree', tree)
root = tree.getroot()
print('Root', root)

# Open a file for writing
atxfloods = open('C:/Temp/atxfloods.csv', 'w')
print('Opening the folder that will contain the csv')

# Create csv file
csvwriter = csv.writer(atxfloods)
print('csv being written')
name_head = []

count = 0
for member in tree.findall('marker'):
    name1 = []
    if count == 0:
        name = member.find('name ').tag
        name_head.append(name)
        jurisdiction = member.find('jurisdiction ').tag
        name_head.append(jurisdiction)
        address = member.find('address ').tag
        name_head.append(address)
        lat = member.find('lat ').tag
        name_head.append(lat)
        lng = member.find('lng ').tag
        name_head.append(lng)
        type = member.find('type ').tag
        name_head.append(type)
        comment = member.find('comment ').tag
        name_head.append(comment)
        id = member.find('id ').tag
        name_head.append(id)
        csvwriter.writerow(name_head)
        count = count + 1

    name = member.find('name ').text
    name1.append(name)
    jurisdiction = member.find('jurisdiction ').text
    name1.append(jurisdiction)
    address = member.find('address ').text
    name1.append(address)
    lat = member.find('lat ').text
    name1.append(lat)
    lng = member.find('lng ').text
    name1.append(lng)
    type = member.find('type ').text
    name1.append(type)
    comment = member.find('comment ').text
    name1.append(comment)
    id = member.find('id ').text
    name1.append(id)
    csvwriter.writerow(name1)
atxfloods.close()

# Transforming the XML into KML
# Setting input to simple kml to the atxfloods url
kml = simplekml.Kml()

for row in atxfloods:
    # We saved our coordinates as lat,long but simplekml wants them in the reverse order
    kml.newpoint(name=row[0], coords=[(row[5], row[4])])

# Saved kml file
kml.save('C:/Temp/atxfloods.kml')

Я ожидаю, что сценарий заполнит CSV-файл содержимым XML-канала, однако он не работает при попыткесоздайте список функций с помощью AttributeError: у объекта 'NoneType' нет атрибута 'tag'.

...