spb insight, 一個用來在ppc/window mobile 看rss 的軟件,最近安裝左係部新的i908 身上,用落都幾好用,而且功能上都幾ok, 中文字都support 得幾好...
不過如果你只用佢的rss xml 位置輸入feed, 那它只會按那個xml有幾多的東西便給你幾多的東西,所以好多時,你只會得到一個preview , 而不是完全的文章, 如果你要它懂得把整個文章download 下來看,便需要用到template 了...
網路上的template教學不算太多, 因為其實它也不算是什麼太難的東西, (對於I.T 人來說吧) 這個是官方的教學http://www.spbinsight.com/documentation.php
在網路上很多的 template sample 其實都只會用到以下的方式去選取個node
<![CDATA[var d = new Document(article.url, "UTF-8");
var nodebody = d.getElementsByTagName("div")[32];
article.body = "";
article.body += nodebody.outerHTML;
]]>
當中的document 是指去那一個網頁用那一種encode 方法建作一個 document object 出來 , d.getElementsByTagName("div")[32]; 就是指那33個div, 對於我...我當然不會走去數數我所要的content 是第件個div 吧...
所以我的 template 會是因另一種數法的, 以yahoo 為列, 我的template 是如下的
<![CDATA[var d = new Document(article.url, "UTF-8");
var nodebody = d.getElementsByTagName("div")[0];
var targetbody = nodebody.getElementsByClassName("livewords")[0];
article.body = "";
article.body += targetbody.outerHTML;
]]>
第一句是指包住文章最外面的東西, 現在的網頁structure, 最外面的多數都會是div,所以我先用d.getElementsByTagName("div")[0]把最外面的div object 拿出來, 再在入面找我要的東西, 由於yahoo 新聞它文章的那個tag 是有class 的, 而且它的class 是唯一的, 所以我選用了getElementsByClassName("livewords")[0];, 得出來的正是我所要的內容..
當然這方法也是有它的弊處, 由於你會儲多一個div 的object 所以它是會比其他的用多了memory 吧, 但我覺得如果你不是有太多的rss feed 要用template 的方式來下載, 那用這個方式應該也不太會造成很嚴重的 memory 問題, 而且在網頁的製作中, 更改版面是很常的事情, 要是有一天, yahoo 在它的版面加了/減了一些div, 用數div 的方法, 我不是要再重新數過嗎?相反, 更改一個 style class 的機會不是沒有, 但相對地是少一點吧.
下面是我用的yahoo template..可以留來參考
0 回應:
Post a Comment