2015-02-07 113 views
1

我正在解析我的电影5生成的movie.xml文件以获得电影的流派。有些电影有多种类型,如: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