大家好,谁用过YQL的?是一个Web Severce.
具体的可以不用管,问题是这样的:我通过javascript获得了一个结果集了,但是在把它解析出来时却在某一部分出问题了。
Javascript如下:
<html>
<head><title>YQL and RSS: Yahoo! Top News Stories</title>
<style type='text/css'>
#results{ width: 800; margin-left: 15%; border: 1px solid gray; padding: 5px; height:400px; overflow: auto; }
</style>
<script type='text/javascript'>
function top_stories(o)
{
var items = o.query.results.Result;
var output = '';
var no_items=items.length;
for(var i=0;i<no_items;i++)
{
var title = items[i].Title;
var ra=items[i].Rating.AverageRating;
var Cate=items[i].Categories.Category;
var Cate2;
for(var j=0;j<Cate.length;j++)
{
Cate2+=Cate[j];
}
output += "<h3>"+title+"</a><h1>"+ra+"</h1>"+Cate2;
}
document.getElementById('results').innerHTML = output;
}
</script>
</head>
<body>
<div id='results'></div>
<script src="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20(1000)%20where%20radius%3D%2220%22%20and%20%0D%0Alatitude%3D%2240.703717%22%20AND%20longitude%3D%22-74.016523%22%20and%20query%3D'hotel'%0D%0A&format=json&diagnostics=true&callback=top_stories"></script>
</body>
</html> 下面的XML文档是其中的一个结果:
<Result xmlns="urn:yahoo:lcl" id="11101184">
<Title>Fairmont-Plaza Hotel</Title>
<Rating>
<AverageRating>4.5</AverageRating>
<TotalRatings>319</TotalRatings>
</Rating>
<Categories>
<Category id="96925816">Entertainment Venues</Category>
<Category id="96926026">Tourist Attractions</Category>
<Category id="96926057">All Bars, Pubs, & Clubs</Category>
<Category id="96926063">Bars & Pubs</Category>
<Category id="96926236">Restaurants</Category>
<Category id="96927484">Fitness</Category>
<Category id="96929265">Hotels & Motels</Category>
<Category id="96929268">Other Lodging</Category>
<Category id="96930848">Marketing Agencies</Category>
</Categories>
</Result>
通过上面的javascript我可以获得Title和AverageRating等,即通过items[i].Title这样的方式来获得,但是我想获得的是Category,可是我写的是错的,因为Categories下的Category 标签名都相同,只有ID不同,而我想把这些Category 都列出来。不知道怎么写好。
注:我只想知道如何解决这个问题,不要说什么换别的方法之类的,因为人家只提供了用JavaScript来获得的数据接口。现在解析地差不多了,就差最后一点了,所以不要给出换方法的建议。希望有高手能帮忙下,感谢,感谢。我会追加分数的!!!
具体的可以不用管,问题是这样的:我通过javascript获得了一个结果集了,但是在把它解析出来时却在某一部分出问题了。
Javascript如下:
<html>
<head><title>YQL and RSS: Yahoo! Top News Stories</title>
<style type='text/css'>
#results{ width: 800; margin-left: 15%; border: 1px solid gray; padding: 5px; height:400px; overflow: auto; }
</style>
<script type='text/javascript'>
function top_stories(o)
{
var items = o.query.results.Result;
var output = '';
var no_items=items.length;
for(var i=0;i<no_items;i++)
{
var title = items[i].Title;
var ra=items[i].Rating.AverageRating;
var Cate=items[i].Categories.Category;
var Cate2;
for(var j=0;j<Cate.length;j++)
{
Cate2+=Cate[j];
}
output += "<h3>"+title+"</a><h1>"+ra+"</h1>"+Cate2;
}
document.getElementById('results').innerHTML = output;
}
</script>
</head>
<body>
<div id='results'></div>
<script src="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20local.search%20(1000)%20where%20radius%3D%2220%22%20and%20%0D%0Alatitude%3D%2240.703717%22%20AND%20longitude%3D%22-74.016523%22%20and%20query%3D'hotel'%0D%0A&format=json&diagnostics=true&callback=top_stories"></script>
</body>
</html> 下面的XML文档是其中的一个结果:
<Result xmlns="urn:yahoo:lcl" id="11101184">
<Title>Fairmont-Plaza Hotel</Title>
<Rating>
<AverageRating>4.5</AverageRating>
<TotalRatings>319</TotalRatings>
</Rating>
<Categories>
<Category id="96925816">Entertainment Venues</Category>
<Category id="96926026">Tourist Attractions</Category>
<Category id="96926057">All Bars, Pubs, & Clubs</Category>
<Category id="96926063">Bars & Pubs</Category>
<Category id="96926236">Restaurants</Category>
<Category id="96927484">Fitness</Category>
<Category id="96929265">Hotels & Motels</Category>
<Category id="96929268">Other Lodging</Category>
<Category id="96930848">Marketing Agencies</Category>
</Categories>
</Result>
通过上面的javascript我可以获得Title和AverageRating等,即通过items[i].Title这样的方式来获得,但是我想获得的是Category,可是我写的是错的,因为Categories下的Category 标签名都相同,只有ID不同,而我想把这些Category 都列出来。不知道怎么写好。
注:我只想知道如何解决这个问题,不要说什么换别的方法之类的,因为人家只提供了用JavaScript来获得的数据接口。现在解析地差不多了,就差最后一点了,所以不要给出换方法的建议。希望有高手能帮忙下,感谢,感谢。我会追加分数的!!!
说得比较简单点,但是我自己试了很久还是没出来。