链接: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
仅当我删除xspf文件第二行中的xmlns="http://xspf.org/ns/0/"
时,我才能解析链接中的文件
使用默认声明,我得到那个错误:
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","")
没有帮助。
def read_xspf_file(self,start,filename):
self.tree = ET.parse(filename)
self.playlist = self.tree.getroot()
self.trackList = self.playlist.find("{http://xspf.org/ns/0/}trackList")
self.tracks = self.trackList.findall("{http://xspf.org/ns/0/}track")
self.songs = []
for song_in_playlist in self.tracks:
self.song = {}
if song_in_playlist.find("{http://xspf.org/ns/0/}location") is not None:
self.song.update({"path": song_in_playlist.find("{http://xspf.org/ns/0/}location").text})
else:
self.song.update({"path": ""})
if song_in_playlist.find("{http://xspf.org/ns/0/}creator") is not None:
self.song.update({"artist": song_in_playlist.find("{http://xspf.org/ns/0/}creator").text})
else:
self.song.update({"artist": "Άγνωστος καλλιτέχνης"})
if song_in_playlist.find("{http://xspf.org/ns/0/}album") is not None:
self.song.update({"album_title": song_in_playlist.find("{http://xspf.org/ns/0/}album").text})
else:
self.song.update({"album_title": "Άγνωστο τίτλος άλμπουμ"})
if song_in_playlist.find("{http://xspf.org/ns/0/}title") is not None:
self.song.update({"title": song_in_playlist.find("{http://xspf.org/ns/0/}title").text})
else:
self.song.update({"title": "Άγνωστος τίτλος"})
if song_in_playlist.find("{http://xspf.org/ns/0/}annotation") is not None:
self.song.update({"annotation": song_in_playlist.find("{http://xspf.org/ns/0/}annotation").text})
else:
self.song.update({"annotation": ""})
if song_in_playlist.find("{http://xspf.org/ns/0/}image") is not None:
self.song.update({"image": song_in_playlist.find("{http://xspf.org/ns/0/}image").text})
else:
self.song.update({"image": ""})
if song_in_playlist.find("{http://xspf.org/ns/0/}info") is not None:
self.song.update({"info": song_in_playlist.find("{http://xspf.org/ns/0/}info").text})
else:
self.song.update({"info": ""})
如果我不知道xmlns,该怎么办。.xspf播放列表文件是否是该标准?
我尝试过:
print(self.playlist.keys())。输出[版本]
如果仅此而已,除非您知道xmlns,否则我将无法继续使用该库解析xml文件。
是真的吗?