ThunderBird, NewsBlog部分代码阅读笔记

本文详细介绍了在Thunderbird中管理RSS订阅的过程,包括locale文件、UI定义、实现代码及feed的调用序列,展示了如何使用DOMParser组件进行XML解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

locale文件:chrome\locale\messenger-newsblog\messenger-newsblog.dtd
(该locale文件不能使用notepad或uedit32保存,否则会比原文件多3个字节导致thunderbird解析失败,我这里使用VS.NET 2005进行编辑,原因不知......)

UI定义:\chrome\content\messenger-newsblog\subscriptions.xul
这个是thunderbird里管理RSS订阅对话框的UI定义,在这里加入按钮

实现代码:
\chrome\content\messenger-newsblog\subscriptions.js(响应用户和对话框的交互)
\chrome\content\messenger-newsblog\Feed.js(Feed类的实现,一个Feed就是一个data source, thunderbird可以支持RSS1/2, ATOM三种schema)
\chrome\content\messenger-newsblog\FeedItem.js(FeedItem类的实现,一个FeedItem对应每一个单独的post)

加入一个feed的调用序列:
1)buttonAdd.onclick ->doAdd()
2)  doAdd() -> openFeedEditor(feedProperties) 打开属性编辑框。
3)  doAdd() -> feed.download() 下载该feed,这里download是一个异步调用,其中打开一个xmlhttprequest对象并将实际的处理代码onDownloaded链接到xmlhttprequest.onload事件,最后调用request.send()发出请求。
4)feed.onDownloaded() -> feed.parse parse根据具体的schema调用对应的parse方法。


打开文件的对话框:使用@mozilla.org/filepicker;1
  None.gif var  fp  =  Components.classes[ " @mozilla.org/filepicker;1 " ].createInstance(nsIFilePicker);

None.gif    var  extbundle  =  strBundleService.createBundle( " chrome://messenger/locale/messenger.properties " );
None.gif   
var  filterLabel  =  "邮件文件(.eml)";
None.gif    var  windowTitle  =  "打开消息";
None.gif
None.gif   fp.init(window, windowTitle, nsIFilePicker.modeOpen);
None.gif   fp.appendFilter(filterLabel, 
" *.eml " );
None.gif
None.gif   
//  Default or last filter is "All Files"
None.gif
   fp.appendFilters(nsIFilePicker.filterAll);
None.gif
None.gif  
try  {
None.gif     
var  ret  =  fp.show();
None.gif     
if  (ret  ==  nsIFilePicker.returnCancel)
None.gif       
return ;
None.gif   }
None.gif   
catch  (ex) {
None.gif     dump(
" filePicker.chooseInputFile threw an exception\n " );
None.gif     
return ;
None.gif   }
None.gif
None.gif   
var  uri  =  fp.fileURL;
None.gif   
None.gif
None.gif}

thunderbird中的XMLParser的使用:
DOMParser 组件, nsIDOMParsrer接口,
读取stream或string





转载于:https://www.cnblogs.com/jonnyyu/archive/2005/02/13/104114.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值