2015-02-07 3 views
1

Я разбираю файл movie.xml, созданный My Movies 5, чтобы получить жанры для фильма. Некоторые фильмы имеют несколько жанров, как:Python ElementTree XML-анализ с несколькими ответами

-<Genres> 
<Genre>Adventure</Genre> 
<Genre>Comedy</Genre> 
<Genre>Action</Genre> 
... 
... 
</Genres> 

Как я могу прочитать его как одной переменной жанры = genere1, genre2, genre3 ...

Это то, что я делаю, и это дает мне только первый жанр только:

import xml.etree.ElementTree as ET 
tree = ET.parse('movie.xml') 
root = tree.getroot() 
Genre = tree.findtext("Genres/Genre") 

укороченный movie.xml выглядит следующим образом:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<!--This file is created by My Movies (http://www.mymovies.dk)--> 
<Title IsBoxSetParent="False" IsBoxSetChild="False"> 
    <ID>649</ID> 
    <MediaType>Movie</MediaType> 
    <LocalTitle>Six Days, Seven Nights</LocalTitle> 
    <ProductionYear>1998</ProductionYear> 
    <ReleaseDate>12/8/1998</ReleaseDate> 
    <RunningTime>101</RunningTime> 
    <TagLine /> 
    <Genres> 
    <Genre>Adventure</Genre> 
    <Genre>Comedy</Genre> 
    <Genre>Action</Genre> 
    <Genre>Romance</Genre> 
    </Genres> 
    <AudioTracks> 
    <AudioTrack Language="English" Type="Dolby Digital" Channels="5.1" /> 
    <AudioTrack Language="French" Type="Dolby Digital" Channels="5.1" /> 
    </AudioTracks> 
    <CheckSum>f98f43ba468b519bb7e78c15b7ab9cfa</CheckSum> 
</Title> 

ответ

0

Вы можете попробовать с findall() вызова используйте map, чтобы извлечь их текст и join создать строку со всеми результатами, как:

import xml.etree.ElementTree as ET 
tree = ET.parse('movie.xml') 
root = tree.getroot() 
Genre = ', '.join(map(lambda e: e.text, tree.findall("Genres/Genre"))) 
print(Genre) 

Это дает:

Adventure, Comedy, Action, Romance 
1

Спасибо, что более элегантно, чем еще одним способом я придумал.

genre="" 
for element in root.iter("Genre"): 
     genre = genre + ", " + ("%s" % (element.text)) 
print genre 

Производит то же самое: Adventure, Comedy, Action, Romance

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