Ajax 解析RSS

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
  <TITLE> RSS </TITLE>
 <SCRIPT LANGUAGE="JavaScript">
 <!--
 function createXMLHttpRequest(){
  if (window.ActiveXObject){
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if (window.XMLHttpRequest) {
   xmlHttp = new XMLHttpRequest();
  }
  return xmlHttp;
 }
 function update()
 {
  request = false;
  try{
   request = new XMLHttpRequest();
  }catch (trymicrosoft){
   try{
    request = new ActiveXObject("Msxml2.XMLHTTP");
   }catch (othermicrosoft){
    try{
     request = new ActiveXObject("Microsoft.XMLHTTP");
    }catch (failed){
     request = false;
    }
   }
  }
  request=createXMLHttpRequest();
  if (!request){
   alert("Error initializing XMLHttpRequest!");
   return;
  }
  request.onreadystatechange=handleResponse;
  request.open("GET","./rss.xml",true);
  request.send(null);
 }
 function handleResponse() {
  if(request.readyState == 4){
   if(request.status == 200){
    var doc = request.responseXML;//.documentElement
    var resp = document.getElementById("resp");
    var info="";
    noteTemp=doc.getElementsByTagName("channel");
    if(noteTemp.length>0)
    node=noteTemp[0].getElementsByTagName("title");//getAttribute
    if(node.length>0)
    info+="标题:"+node[0].firstChild.nodeValue+"<BR>";
    node=noteTemp[0].getElementsByTagName("link");
    if(node.length>0)
    info+="链接:"+node[0].firstChild.nodeValue+"<BR>";
    node=noteTemp[0].getElementsByTagName("description");
    if(node.length>0)
    info+="描述:"+node[0].firstChild.nodeValue+"<BR>";
    node=noteTemp[0].getElementsByTagName("pubDate");
    if(node.length>0)
    info+="发布时间:"+node[0].firstChild.nodeValue+"<BR>";
    node=noteTemp[0].getElementsByTagName("language");
    if(node.length>0)
    info+="语言:"+node[0].firstChild.nodeValue+"<BR>";
    node=noteTemp[0].getElementsByTagName("image");
    node=node[0].getElementsByTagName("url");;
    if(node.length>0)
    info+="Logo:<BR><img src='"+node[0].firstChild.nodeValue+"'><BR>";

    if(noteTemp.length>0)
    noteTemp=noteTemp[0].getElementsByTagName("item");
    info+="消息数量:"+noteTemp.length+"<BR>";
    info+="<table width=100%>";
    for(i=0;i<noteTemp.length;i++)
    {
     title=noteTemp[i].getElementsByTagName("title")[0].firstChild.nodeValue;
     link=noteTemp[i].getElementsByTagName("link")[0].firstChild.nodeValue;
     pubDate=noteTemp[i].getElementsByTagName("pubDate")[0].firstChild.nodeValue;
     description=noteTemp[i].getElementsByTagName("description")[0].firstChild.nodeValue;
     info+="<tr><td><a href=/""+link+"/" target=/"_blank/" title='"+description+"'>"+title+" ["+pubDate+"]</a></td></tr>";
    }
    info+="</table>";
    resp.innerHTML=info;
   }
  }
 }

  //-->
  </SCRIPT>
 </HEAD>

 <BODY>
  <div id="resp" width=100% height=400>Loading....</div>
 </BODY>
</HTML>
<SCRIPT LANGUAGE="JavaScript">
<!--
 update();
//-->
</SCRIPT>

此代码对于标准的rss,可以正常运行,并兼容IE和FireFox。不过有些网站提供的RSS不规范,导致无法正常解析,比如cnBeta的rss,内容看起来正常,但是他的Content-Type错误。对于此类问题,如下的办法可以解决IE的问题,FireFox的问题研究中:
增加如下vbscript函数:
  <SCRIPT LANGUAGE="vbScript">
  <!--
  Function bytes2BSTR(vIn)
 Dim strReturn,i,ThisCharCode,innerCode,Hight8,Low8,NextCharCode
 strReturn=""
 For i=1 To LenB(vIn)
  ThisCharCode=AscB(MidB(vIn,i,1))
  If ThisCharCode<&H80 Then
   strReturn=strReturn & Chr(ThisCharCode)
  Else
   NextCharCode=AscB(MidB(vIn,i+1,1))
   strReturn=strReturn&Chr(CLng(ThisCharCode)*&H100+CInt(NextCharCode))
   i=i+1
  End If
 Next
  bytes2BSTR=strReturn
 End Function
 //-->
  </SCRIPT>
查找代码:
var doc = request.responseXML;
将该代码注释掉,并在下面添加:
doc = new ActiveXObject("Microsoft.XMLDOM");
var xml=bytes2BSTR(request.responseBody);
doc.loadXML(xml);

时间: 2024-11-02 02:02:33

Ajax 解析RSS的相关文章

用 Ajax 和 RSS 攒个首页新闻

ajax|rss 为了排遣这段时间的无聊也顺便做个 RSS 应用的练习,决定给自己维护的一个小网站加个首页新闻,浏览器用 Ajax 或者 Ajah 从服务器取新闻异步的显示出来,同时提供 RSS 源供聚合器订阅. XMLHTTPRequest 从上次做过一个手机模拟器后就再没碰过,这次在网上搜寻了一番居然发现了一个好东西:http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/,一个 Cross-Browser 的 XMLHtt

巧用Ajax和RSS做个人门户网站

ajax|rss 为了排遣这段时间的无聊也顺便做个 RSS 应用的练习,决定给自己维护的一个小网站加个首页新闻,浏览器用 Ajax 或者 Ajah 从服务器取新闻异步的显示出来,同时提供 RSS 源供聚合器订阅. XMLHTTPRequest 从上次做过一个手机模拟器后就再没碰过,这次在网上搜寻了一番居然发现了一个好东西:http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/,一个 Cross-Browser 的 XMLHtt

ajax读rss示例

ajax|rss|示例 代码: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>this is test</ti

PHP解析RSS的方法

 这篇文章主要介绍了PHP解析RSS的方法,实例分析了php解析RSS的原理与XML文件的操作技巧,需要的朋友可以参考下     本文实例讲述了PHP解析RSS的方法.分享给大家供大家参考.具体如下: 1. php代码如下: 代码如下: <?php require "XML/RSS.php"; $rss = new XML_RSS("http://php.net/news.rss"); $rss->parse(); foreach($rss->ge

Jquery Ajax解析XML数据简单实例

 本篇文章主要是对Jquery Ajax解析XML数据(同步及异步调用)的简单实例进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: $.ajax({                 async: true, // 默认true(异步请求)                 cache: true, // 默认true,设置为 false 将不会从浏览器缓存中加载请求信息.                 type: "POST", // 默认:GET 请求方式:[PO

PHP解析RSS的方法_php技巧

本文实例讲述了PHP解析RSS的方法.分享给大家供大家参考.具体如下: 1. php代码如下:     复制代码 代码如下: <?php require "XML/RSS.php"; $rss = new XML_RSS("http://php.net/news.rss"); $rss->parse(); foreach($rss->getItems() as $item) {   print_r($item); } ?> 2. RSS.ph

ajax解析后台数据,解析不出来?

问题描述 ajax解析后台数据,解析不出来? 前台ajax: <script type="text/javascript" src="${pageContext.request.contextPath }/script/jquery/jquery-1.11.3.min.js"></script> <script type="text/javascript"> $(function(){ alert("

PHP和AJAX的RSS阅读器

PHP和AJAX的RSS阅读器 RSS阅读器是用来读取RSS信息 允许快速的RSS浏览新闻和更新 AJAX的RSS阅读器 在AJAX以下例子,我们将展示一个RSS阅读器的内容从RSS是载入网页无需刷新. 在HTML表单 这是HTML网页.它包含一个简单的HTML表格,并链接到一个JavaScript : <html> <head> <script type="text/javascript" src="getrss.js"><

用Ajax和RSS制作一个首页新闻

ajax|rss 给自己维护的一个小网站加个首页新闻,浏览器用 Ajax 或者 Ajah 从服务器取新闻异步的显示出来,同时提供 RSS 源供聚合器订阅. XMLHTTPRequest 从上次做过一个手机模拟器后就再没碰过,这次在网上搜寻发现了一个好东西:http://www.scss.com.au/family/andrew/webdesign/xmlhttprequest/,一个 Cross-Browser 的 XMLHttpRequest 实现,作者在创作共用条款(Creative Com