我正在尝试在Kynetx应用程序中使用Yahoo Local Search。
ruleset avogadro {
meta {
name "yahoo-local-ruleset"
description "use results from Yahoo local search"
author "randall bohn"
key yahoo_local "get-your-own-key"
}
dispatch { domain "example.com"}
global {
datasource local:XML <- "http://local.yahooapis.com/LocalSearchService/V3/localsearch";
}
rule add_list {
select when pageview ".*" setting ()
pre {
ds = datasource:local("?appid=#{keys:yahoo_local()}&query=pizza&zip=#{zip}&results=5");
rs = ds.pick("$..Result");
}
append("body","<ul id='my_list'></ul>");
always {
set ent:pizza rs;
}
}
rule add_results {
select when pageview ".*" setting ()
foreach ent:pizza setting pizza
pre {
title = pizza.pick("$..Title");
}
append("#my_list", "<li>#{title}</li>");
}
}我最后列出的列表是
. [object Object]和“title”有
{'$t' => 'Pizza Shop 1'}我想不出怎么才能拿到标题。它看起来像是来自原始XML文件的'text content‘变成了{'$t’=> 'text content'},而'$t‘给出了需要挑选()的问题。
发布于 2010-12-26 13:26:20
当XML数据源和数据集转换为JSON时,XML节点中的文本值将被分配给$t。
title = pizza.pick("$..Title.$t");试一试,看看这是否能解决你的问题。
要考虑的与您的问题无关的附注:
1)感谢您分享整个规则集,您所看到的问题以及您所期望的问题。让你更容易回答你的问题。
2)规则集标识符不应从AppBuilder或命令行gem为您生成的内容更改。您当前的标识符
ruleset avogadro {应该看起来更像
规则集a60x304 {
3)你不需要
setting ()在select语句中,除非正则表达式中有捕获组
发布于 2010-12-26 13:25:45
事实证明pick("$..Title.$t")确实起作用了。它看起来很滑稽,但很管用。我猜没有小丑帽子那么好笑。
name = pizza.pick("$..Title.$t");
city = pizza.pick("$..City.$t");
phone = pizza.pick("$..Phone.$t");
list_item = "<li>#{name}/#{city} #{phone}</li>"真希望我现在就有披萨!
https://stackoverflow.com/questions/4532801
复制相似问题