今天完善开发了一下JAVA RSS生成程序,主要是对XML文件的操作!整理一下思路是这样的:
- 若XML文件不存在,则生成之
- 若文件存在,并且新文章与原有item不重复,将新文章内容插入之
- 删除文章,删除item
- 控制文章数目变量rssCount,超出该数值先删除最旧的item,然后再插入数据,保证生成数据的准确性。
OK,这样就搞定!
折腾了半天时间主要浪费在了查找相关API文档及节点删除问题上! 其实代码写出来很简单,没多少,但思考的时间却是蛮多!下面来看看这个删除XML节点的代码片段:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | List itemList = document.selectNodes("//rss/channel/item"); //获得item节点list对象 int itemListsize = itemList.size(); int[] delarray = getInItemNumber(RssUtils.getFilename(bbsinfo.getTypeid())); //获得每个item对象的guid 标识符并通过getInItemNumber方法对其排序, //当然如果本来已经是有序的则不需另作排序 int delorder =0; while (itemListsize >= rssCount) {//rssCount控制RSS输出数量 for(int x =0;x <itemList.size();x++){ Element itemElement = (Element)itemList.get(x); Element guidElement = (Element)itemElement.element("guid"); if(guidElement.getText().equals(String.valueOf(delarray[delorder]))){ itemElement.detach(); //删除节点通过detach()方法,查了半天API文档才找到 break; } } delorder++; itemListsize--;//这里的++ -- 一定不能忘,否则无限循环! } |
哈哈,我这样标注得够详细了吧!我在网上看到很多朋友是用Iterator进行迭代,个人感觉Iterator在这里不好用,用之麻烦!
嗯,除了删除节点问题其他的关于XML文档的生成与添加数据还算容易! PS. 之前在博客整天喷些没用的东西,嗯,现在写点与工作相关的吧,以做思想标记与日后查找,HOHO….
博主是高手,现在潜心研究写代码
[Reply]
有趣, java的rss很新鲜
[Reply]
久酷
Reply:
June 25th, 2010 at 12:40
@littlebear, java也是做网站的一种语言嘛,呼呼……
[Reply]
大材小用啊,这个应用场景直接生成新的xml多好
[Reply]
久酷
Reply:
June 25th, 2010 at 10:57
@哈默, 直接生成的话效率低吧,只有当XML不存在的时候才会重新生成,生成之后,每次直接修改就好了,呼呼…… 修改的数据量要小好多
[Reply]
哈默
Reply:
June 25th, 2010 at 11:01
@久酷, 我还是觉得只要判断有新文章的时候就重新生成比较简单。你这个需要遍历,比较,然后再插入或者删除节点,逻辑上复杂多啦。当然具体还是需要看你的实际应用情况,不过可以对比下
[Reply]
久酷
Reply:
June 25th, 2010 at 11:04
@哈默, 嗯,这个确实是,要遍历, 排序 ,排序后查找将最旧的删除 然后再进行插入操作 ,比直接生成要复杂一些,HOHO^_^