嗨,我正在使用ElementTree解析来自Kuler的xml提要。我才刚开始学python,但还是被困在这里了。 解析工作正常,直到我尝试检索包含“:”的任何节点 例如库勒:swatchHexColor在
以下是完整进纸的精简版,但结构相同:
<rss xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:kuler="http://kuler.adobe.com/kuler/API/rss/" xmlns:rss="http://blogs.law.harvard.edu/tech/rss" version="2.0">
<channel>
<title>kuler popular themes</title>
<item>
<title>Theme Title: Fresh Money</title>
<description>
<img src="http://kuler-api.adobe.com/kuler/themeImages/theme_808366.png" /><br />
Artist: thesylph005<br />
ThemeID: 808366<br />
Posted: 03/02/2010<br />
Hex:
2F400D, 8CBF26, A8CA65, E8E5B0, 419184
</description>
<kuler:themeItem>
<kuler:themeID>808366</kuler:themeID>
<kuler:themeTitle>Fresh Money</kuler:themeTitle>
<kuler:themeImage>http://kuler-api.adobe.com/kuler/themeImages/theme_808366.png</kuler:themeImage>
<kuler:themeAuthor>
<kuler:authorID>370750</kuler:authorID>
<kuler:authorLabel>thesylph005</kuler:authorLabel>
</kuler:themeAuthor>
<kuler:themeTags/>
<kuler:themeRating>4</kuler:themeRating>
<kuler:themeDownloadCount>708</kuler:themeDownloadCount>
<kuler:themeCreatedAt>20100302</kuler:themeCreatedAt>
<kuler:themeEditedAt>20100302</kuler:themeEditedAt>
<kuler:themeSwatches>
<kuler:swatch>
<kuler:swatchHexColor>2F400D</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.183333</kuler:swatchChannel1>
<kuler:swatchChannel2>0.25</kuler:swatchChannel2>
<kuler:swatchChannel3>0.05</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>0</kuler:swatchIndex>
</kuler:swatch>
<kuler:swatch>
<kuler:swatchHexColor>8CBF26</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.55</kuler:swatchChannel1>
<kuler:swatchChannel2>0.75</kuler:swatchChannel2>
<kuler:swatchChannel3>0.15</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>1</kuler:swatchIndex>
</kuler:swatch>
<kuler:swatch>
<kuler:swatchHexColor>A8CA65</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.659722</kuler:swatchChannel1>
<kuler:swatchChannel2>0.791667</kuler:swatchChannel2>
<kuler:swatchChannel3>0.395833</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>2</kuler:swatchIndex>
</kuler:swatch>
<kuler:swatch>
<kuler:swatchHexColor>E8E5B0</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.91</kuler:swatchChannel1>
<kuler:swatchChannel2>0.898047</kuler:swatchChannel2>
<kuler:swatchChannel3>0.688705</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>3</kuler:swatchIndex>
</kuler:swatch>
<kuler:swatch>
<kuler:swatchHexColor>419184</kuler:swatchHexColor>
<kuler:swatchColorMode>rgb</kuler:swatchColorMode>
<kuler:swatchChannel1>0.254901</kuler:swatchChannel1>
<kuler:swatchChannel2>0.57</kuler:swatchChannel2>
<kuler:swatchChannel3>0.519034</kuler:swatchChannel3>
<kuler:swatchChannel4>0.0</kuler:swatchChannel4>
<kuler:swatchIndex>4</kuler:swatchIndex>
</kuler:swatch>
</kuler:themeSwatches>
在 2010年3月30日星期二太平洋标准时间11:27:12 在
所以如果我做了一个关于每个项目的描述,我会很好的恢复。 但是当我试图检索nodename中有:的任何内容时 异常类型:KeyError 异常值:':'
所以这是有效的
^{pr2}$但事实并非如此
def xml():
kulerurl = 'http://kuler-api.adobe.com/rss/get.cfm?listType=popular&startIndex=0&itemsPerPage=5&timeSpan=30&key=mykey'
rss = parse(urllib.urlopen(kulerurl)).getroot()
for element in rss.findall('channel/item/kuler:themeItem'):
print(element.findtext('kuler:themeID'))
dump (rss)
如果有人能告诉我我做错了什么,我会非常感激的
谢谢 基兰
基于article(以及本文的评论),我认为您必须用实际的URI替换名称空间名称(并删除冒号并将其放入
{}
):您还可以在introduction中阅读ElementTree如何处理名称空间。在
相关问题 更多 >
编程相关推荐