spb insight

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