Ajax 解析RSS

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:    RSS          Loading....  此代码对于标准的rss,可以正常运行,并兼容IE和FireFox。不过有些网站提供的RSS不规范,导致无法正常解析,比如cnBeta的rss,内容看起来正常,但是他的Content-Type错误。

<!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);

目录
相关文章
|
6月前
|
XML 前端开发 JavaScript
Javaweb之Ajax的详细解析
1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序,所以必须涉及到2个程序的交互,所以这就需要用到我们接下来学习的Ajax技术。
88 0
|
6月前
|
XML 机器学习/深度学习 JSON
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
77 0
在火狐浏览器调ajax获取json数据时,控制台提示“XML 解析错误:格式不佳”。
|
5月前
|
XML 缓存 搜索推荐
RSS 解析:全球内容分发的利器及使用技巧
RSS(Really Simple Syndication)是一种 XML 格式,用于网站内容的聚合和分发,让用户能快速浏览和跟踪更新。RSS 文档结构包括 `&lt;channel&gt;` 和 `&lt;item&gt;` 元素,允许内容创作者分享标题、链接和描述。通过 RSS,用户可以定制新闻源,过滤不相关信息,提高效率。RSS 支持不同版本,如 RSS 0.91 和 RSS 2.0,其中 RSS 2.0 语法简单且广泛使用。RSS 提高网站流量,适用于新闻、博客、日历等频繁更新的站点。RSS 的历史始于 1997 年,至今仍无官方标准,但已成为内容共享的重要工具。
325 0
|
6月前
|
Linux
百度搜索:蓝易云【深入解析Linux进程内存:VSS、RSS、PSS、USS及查看方式】
通过以上方法,你可以深入了解Linux进程的内存使用情况,包括VSS、RSS、PSS、USS等指标,帮助你进行性能优化和资源管理。
144 12
|
JSON 前端开发 数据格式
ajax请求解析json数据渲染在前端界面
ajax请求解析json数据渲染在前端界面
56 0
|
JSON 数据格式
jQuery+ajax解析json数据渲染
jQuery+ajax解析json数据渲染
55 0
|
XML 前端开发 JavaScript
ajax解析
ajax解析
77 0
|
小程序 前端开发
|
XML 前端开发 JavaScript
什么是Ajax和jquery
什么是Ajax和jquery
87 0
|
6月前
|
JSON 前端开发 Java
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
利用Spring Boot处理JSON数据实战(包括jQuery,html,ajax)附源码 超详细
150 0

推荐镜像

更多
下一篇
无影云桌面