课程设计初养成

         开学两周,做数据结构的课程设计,没有课,可以说是又延长了两周的假期。我分到的题目是由一个XML文件建立一个新闻网站。
       上学期就开始对XML感兴趣,用Jdom写了点小程序,算是实验,用它拔过我的blog文章摘要及评论,感觉jdom用起来很方便,xml的树状结构更是清晰明了。所以这次那道题目一点都不迷惑,还有些怀疑老师是不是给我放水,呵呵。但是,这次没打算用jdom做,那样未免有些投机取巧了,这道题目的目的就在于xml文件的解析和树状数据结构的建立,都不难,再不自己做就太说不过去了。
       还是用java来做,比较容易上手,说实话现在要是再让我用c++做,还真得先找个函数库做后备,虽然语法都应该没什么问题,但是有什么函数就都不知道了。因为xml要用的是unicode编码,支持汉字,所以要采用按照char为单位读取的reader,而不是传统的inputstream,这样就可以读取xml文件了。我没有使用带buffer的reader(没去找,也不知道有没有),而是先将reader中的char挨个读入到一个string中,每当读完一个tag(就是一对尖括号)就将其封装为一个element,作为一个树节点。当读完xml文件,树状结构也就建立好了。
       树的建立用的是先根遍历算法,这对于xml文件的格式来说十分舒服自然。这里有一点新的认识就是表征一个tag结束的</  >,其实它里面的type只是为了人们看着清楚,对于解析起来说,完全可以不用考虑这个结束标记的type是什么(合式检查就另当别论了)。我的做法是当遇到新的tag时,建立节点,添加父子关系,然后将新节点压栈,作为当前的父节点,当遇到<  />标签的时候,进行弹栈,直到没有新的节点可以建立并且栈为空退出。(一开始没有考虑<tpye  />的情况,导致可能会造成堆栈错误,其实只要不对那个节点进行压栈就可以了)
       这样就可以将xml文件解析成一棵树的结构,之后再对其进行遍历提取信息,先是在网页上就可以了。目前只做到这里,但是后面的就没什么了,倒是分析BSP的feed格式挺有意思。看了国内外的几个大的BSP发现了三种规范:rss、atom、rdf。前两种都听说过,只是这最后一种是头回见。国内基本用的都是rss,atom和rdf几乎没有用的,找到两个国外的网站用的是那两个。虽然是三个不同的标准,但是大体结构都还是差不多的,基本信息也都出入不大,所以遍历搜索信息的算法可以基于对标准的人工分析,不用靠“猜”,只是这样就需要针对每一个标准提供不同的算法来解析。而还会有一些网站的feed不是按照这种规范来做的,可能就会需要特定优化了。
       写到这里发现忘记说一个很重要的事情,就是我打算把这个课程设计做成什么东西。我想把它做成一个网站,任何人都可以随意来添加feed,feed源保存到数据库中,然后在页面显示全部或者部分新闻的标题,读者可以点击标题,或者只是指向,察看摘要。基本就是这个功能,没有什么特色,没有什么新意,只是想做成这个样子。如果有空间可以放的话我倒是挺想挂出去,看看一段时间之后上面会有哪些东西。估计都是广告了,呵呵。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值