Python - чтение Xml файла - PullRequest
       72

Python - чтение Xml файла

0 голосов
/ 28 апреля 2020

Ссылка: http://xspf.org/ns/0/XSPF.rdf

def read_xspf_file(self,start,filename):
    self.tree = ET.parse(filename)
    self.playlist = self.tree.getroot()
    self.trackList = self.playlist.find("trackList")
    self.tracks = self.trackList.findall("track")
    self.songs = []
    for song_in_playlist in self.tracks:
        self.song = {}
        if song_in_playlist.find("location") is not None:
            self.song.update({"path": song_in_playlist.find("location").text})
        else:
            self.song.update({"path": ""})

        if song_in_playlist.find("creator") is not None:
            self.song.update({"artist": song_in_playlist.find("creator").text})
        else:
            self.song.update({"artist": "Άγνωστος καλλιτέχνης"})

        if song_in_playlist.find("album") is not None:
            self.song.update({"album_title": song_in_playlist.find("album").text})
        else:
            self.song.update({"album_title": "Άγνωστο τίτλος άλμπουμ"})

        if song_in_playlist.find("title") is not None:
            self.song.update({"title": song_in_playlist.find("title").text})
        else:
            self.song.update({"title": "Άγνωστος τίτλος"})

        if song_in_playlist.find("annotation") is not None:
            self.song.update({"annotation": song_in_playlist.find("annotation").text})
        else:
            self.song.update({"annotation": ""})

        if song_in_playlist.find("image") is not None:
            self.song.update({"image": song_in_playlist.find("image").text})
        else:
            self.song.update({"image": ""})

        if song_in_playlist.find("info") is not None:
            self.song.update({"info": song_in_playlist.find("info").text})
        else:
            self.song.update({"info": ""})



        self.songs.append(self.song)
    print(self.songs)
    return self.songs

Я могу проанализировать файл по ссылке, только если я удалю xmlns="http://xspf.org/ns/0/" во второй строке файла xspf

с объявлением по умолчанию я получаю эти ошибки:

Traceback (most recent call last):
  File "main.py", line 192, in <module>
    playlist_parser.parse_playlist(start,"playlist_files/playlist.xspf")
  File "/home/chris/Έγγραφα/Python/Papinhio player/scripts/read_playlist.py", line 40, in parse_playlist
    self.songs_data = self.read_xspf_file(start,filename)
  File "/home/chris/Έγγραφα/Python/Papinhio player/scripts/read_playlist.py", line 132, in read_xspf_file
    self.tracks = self.trackList.findall("track")
AttributeError: 'NoneType' object has no attribute 'findall'

Странно, я думаю ... Почему? Как я могу это исправить?

Редактировать: я пытался

self.playlist = self.tree.getroot() self.playlist.set("xmlns","")

с не помогло.

...