- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
您好,我正在使用 ElementTree 解析来自 Kuler 的 xml feed。我才刚刚开始使用 python,但我被困在这里了。解析工作正常,直到我尝试检索包含“:”的任何节点例如 kuler: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(太平洋标准时间)
因此,如果我对每个项目的描述进行查找,我会得到很好的结果。但是当我尝试检索节点名中带有 : 的任何内容时,我得到了异常类型:KeyError异常值:':'
所以这有效
from elementtree.ElementTree import Element, SubElement, dump, parse
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'):
print(element.findtext('description'))
dump (rss)
但这不是
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 替换命名空间名称(并删除冒号并将其放入 {}
中):
namespace = 'http://kuler.adobe.com/kuler/API/rss/'
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/{%s}themeItem' % namespace):
print(element.findtext('{%s}themeID' % namespace))
dump (rss)
[XML namespaces]
The element type represents a qualified name pair, also called universal name, as a string of the form “{uri}local“. This syntax can be used both for tag names and for attribute keys.
您还可以阅读此introduction ElementTree 如何处理命名空间。
关于python - : in node causing Keyerror in xmlparsing using ElementTree,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549211/
我目前在使用 XMLParse() 时遇到问题,正如标题所说,它不断抛出这个错误 An error occured while Parsing an XML document. Content is
抱歉,如果我让事情变得困惑。我编辑了整个问题。 我正在为托管在我的网络服务器上的网址使用 XMLPARSER。 我想将我的 url 列表从 url.add(map); 解析为 intent.putEx
看来我无法在 xml 中的表格中显示数据... - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPat
有人可以告诉我我需要做什么来解决这个问题 我有一个对象 UserPrefs *userpref 有一个变量叫userpref.userid,它是一个NSNumber 我正在解析 XML,这里的一切都运
使用 XmlParser 时,它会自动去除未使用的命名空间定义。它似乎没有检测到值中使用的命名空间。 示例代码:属性“type”的值为“xs:string”,它需要命名空间定义,但 XmlParser
我正在测试 XMLParsing 库(使用 Codable 协议(protocol)和 XML 请求) XMLParsing 库链接: https://github.com/ShawnMoore/XM
您好,我正在使用 ElementTree 解析来自 Kuler 的 xml feed。我才刚刚开始使用 python,但我被困在这里了。解析工作正常,直到我尝试检索包含“:”的任何节点例如 kuler
如何在 iphone 上使用 xmlparsing 访问以下 XML 文件? Title &plainEntity; a1b1c1 a2
我正在尝试使用两种不同的方法(xmlParse 和 httr::GET)请求一个 XML 文档,并期望得到相同的响应。我使用 xmlParse 得到的响应是我所期望的,但是使用 httr::GET 我
我正在为一些看起来像这样的古老代码编写测试用例: if (isXML(foo)) { try { bar = xmlParse(foo); } catch(any e) {
我什么时候想使用 xmlParse 函数而不是 xmlTreeParse 函数?此外,参数值 useInternalNodes=TRUE 或 asText=TRUE 何时有用? 例如: library
我想在来自 XML 的 android 端值的 Web View 中设置换行符。我在 XML 中使用 (/n) 标签,但它不被接受。我不知道如何在段落中换行,我也想设置来自 drawable 文件夹的
我是一名优秀的程序员,十分优秀!