JavaScript操作XML 使用百度RSS作为新闻源示例


Posted in Javascript onFebruary 17, 2012

js操作xml源,作为页面的动态新闻
参考JS源码如下(存为rss.js文件):

var main = document.getElementById("content").getElementsByTagName("DIV"); 
/* 
* 当前目录下面有一个名为xml的子文件夹,下面引用的源保存在目录下。 
* 下面每一行的冒号前面是文件名,后面是xml源地址(可以从源址下载得到xml文件,下载后保存为对应文件名) 
* 可以在下面的地址上单击右键,选择目标另存为,下载后得到的是txt文件,更改扩展名为xml即可 
* movie:"http://news.baidu.com/n?cmd=1&class=film&tn=rss" 
* woman:"http://news.baidu.com/n?cmd=1&class=healthnews&tn=rss" 
* house:"http://news.baidu.com/n?cmd=1&class=housenews&tn=rss" 
* car:"http://news.baidu.com/n?cmd=1&class=autonews&tn=rss" 
* sport:"http://news.baidu.com/n?cmd=1&class=sportnews&tn=rss" 
* edu:"http://news.baidu.com/n?cmd=1&class=edunews&tn=rss" 
*/ 
var RssSource = { 
movie: "xml/movie.xml", 
woman: "xml/woman.xml", 
house: "xml/house.xml", 
car: "xml/car.xml", 
sport: "xml/sport.xml", 
edu: "xml/edu.xml" 
} 
function Init() { 
LoadXml(RssSource.movie, main[0]); 
LoadXml(RssSource.woman, main[1]); 
LoadXml(RssSource.house, main[2]); 
LoadXml(RssSource.car, main[3]); 
LoadXml(RssSource.sport, main[4]); 
LoadXml(RssSource.edu, main[5]); 
} 
function LoadXml(url, target) { 
var xml = null; 
var isIE = true; 
if (window.ActiveXObject) //IF IE 
{ 
xml = new ActiveXObject("Microsoft.XMLDOM"); 
isIE = true; 
} else if (document.implementation.createDocument) //IF FF 
{ 
xml = document.implementation.createDocument("", "", null); 
isIE = false; 
} 
xml.async = false; 
xml.load(url); 
//获取XML文档根节点 
var root = xml.documentElement; 
//获取RSS的XML源中的item节点 
var items = root.getElementsByTagName("item"); 
//创建DOm对象 ——RSS标题 
var head = document.createElement("dt"); 
head.setAttribute("style", "background-color:#ccc;cursor:pointer;"); 
if (isIE) { //IE时操作 
head.innerHTML = "<b>" + (root.getElementsByTagName("title")[0].text).substring(2, 6) + "</b> <sub>" + root.getElementsByTagName("pubDate")[0].text + "</sub>"; 
target.appendChild(head); 
//创建DOm对象 ——RSS列表 
var ul = document.createElement("ul"); 
//把列表添加到DIV容器中 
target.appendChild(ul); 
//循环输出每天新闻到li中,其中items.length是新闻条数 
for (i = 0; i < items.length; i++) { 
//创建DOM对象li,存放新闻 
var li = document.createElement("li"); 
//创建DOM超链接对象 
var lk = document.createElement("a"); 
//时间 
//超链接的title属性,同时用于保存新闻文本 
lk.title = items[i].selectSingleNode("title").text; 
//设置超链接的href属性 
lk.href = items[i].selectSingleNode("link").text; 
//超链接显示的文本 , 若长于15个字符,则截取,然后加上... 
lk.innerHTML = lk.title.length > 18 ? lk.title.substring(0, 16) + "....": lk.title; 
//lk.innerText = lk.title; 
//把li添加到ul中 
ul.appendChild(li); 
//把超链接添加到li中 
li.appendChild(lk); 
} 
} else { //非IE时操作 
head.innerHTML = "<b>" + (root.getElementsByTagName("title")[0].textContent).substring(2, 6) + "</b> <sub>" + root.getElementsByTagName("pubDate")[0].textContent + "</sub>"; 
target.appendChild(head); 
//创建DOm对象 ——RSS列表 
var ul = document.createElement("ul"); 
//把列表添加到DIV容器中 
target.appendChild(ul); 
//循环输出每天新闻到li中,其中items.length是新闻条数 
for (i = 0; i < items.length; i++) { 
//创建DOM对象li,存放新闻 
var li = document.createElement("li"); 
//创建DOM超链接对象 
var lk = document.createElement("a"); 
//时间 
//超链接的title属性,同时用于保存新闻文本 
lk.title = items[i].getElementsByTagName("title")[0].textContent; 
//设置超链接的href属性 
lk.href = items[i].getElementsByTagName("link")[0].textContent; 
//超链接显示的文本 , 若长于15个字符,则截取,然后加上... 
lk.innerHTML = lk.title.length > 18 ? lk.title.substring(0, 16) + "....": lk.title; 
//lk.innerText = lk.title; 
//把li添加到ul中 
ul.appendChild(li); 
//把超链接添加到li中 
li.appendChild(lk); 
} 
} 
}

显示页面参考源码(存为htm页面)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link type="text/css" rel="stylesheet" href="index.css"> 
<base target="_blank"> 
</head> 
<body onload="Init()"> 
<div id="pagebody"> 
<div id="header"> 
<div id="banner"></div> 
</div> 
<div id="content"> 
<div class="left"></div> 
<div class="right"></div> 
<div class="left"></div> 
<div class="right"></div> 
<div class="left"></div> 
<div class="right"></div> 
</div> 
</div> 
</body> 
</html> 
<script type="text/javascript" src="rss.js"></script>

CSS源码(存为index.css )
a:link,a:visited,a:active { 
text-decoration:none; 
} 
a:hover { 
text-decoration:underline; 
} 
#pagebody { 
margin:0 auto; 
width:800px; 
height:1200px; 
border-left:dotted 1px gray; 
border-right:dotted 1px gray; 
background-color:#eee; 
} 
#header { 
height:200px; 
} 
#banner { 
height:160px; 
background-color:#fff; 
} 
#content div { 
width:380px; 
height:270px; 
border:solid 1px gray; 
overflow:hidden; 
background-color:#fff; 
} 
#content div ul li { 
list-style-image:url(list.gif); 
} 
.left { 
float:left; 
margin-top:10px; 
margin-left:10px; 
} 
.right { 
float:right; 
margin-top:10px; 
margin-right:10px; 
}
Javascript 相关文章推荐
jQuery验证Checkbox是否选中的代码 推荐
Sep 04 Javascript
关于JS中的闭包浅谈
Aug 23 Javascript
取消选中单选框radio的三种方式示例介绍
Dec 23 Javascript
js获得当前系统日期时间的方法
May 06 Javascript
理解JS绑定事件
Jan 19 Javascript
微信小程序  checkbox组件详解及简单实例
Jan 10 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
Sep 21 Javascript
vue+echarts实现可拖动节点的折线图(支持拖动方向和上下限的设置)
Apr 12 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
layui自定义工具栏的方法
Sep 19 Javascript
ES6常用小技巧总结【去重、交换、合并、反转、迭代、计算等】
Dec 21 Javascript
vue将data恢复到初始状态 &amp;&amp; 重新渲染组件实例
Sep 04 Javascript
jquery实现奇偶行赋值不同css值
Feb 17 #Javascript
qTip2 精致的基于jQuery提示信息插件
Feb 17 #Javascript
javascript suggest效果 自动完成实现代码分享
Feb 17 #Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
Feb 16 #Javascript
Js从头学起(基本数据类型和引用类型的参数传递详细分析)
Feb 16 #Javascript
通过JS获取用户本地图片路径并显示的代码
Feb 16 #Javascript
javascript简易缓动插件(源码打包)
Feb 16 #Javascript
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
php zend 相对路径问题
2009/01/12 PHP
让PHP开发者事半功倍的十大技巧小结
2010/04/20 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
如何取得中文字符串中出现次数最多的子串
2013/08/08 PHP
php批量更改数据库表前缀实现方法
2013/10/26 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
PHP实现WebService的简单示例和实现步骤
2015/03/27 PHP
PHP使用mysqldump命令导出数据库
2015/04/14 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
js常用代码段整理
2011/11/30 Javascript
动态加载iframe时get请求传递中文参数乱码解决方法
2014/05/07 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
ionic实现可滑动的tab选项卡切换效果
2020/04/15 Javascript
angularjs 表单密码验证自定义指令实现代码
2016/10/27 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
webstorm添加*.vue文件支持
2018/05/08 Javascript
微信小程序实现城市列表选择
2018/06/05 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
基于JavaScript获取url参数2种方法
2020/04/17 Javascript
JavaScript Window浏览器对象模型原理解析
2020/05/30 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
python创建列表并给列表赋初始值的方法
2015/07/28 Python
Python3连接MySQL(pymysql)模拟转账实现代码
2016/05/24 Python
Python3 伪装浏览器的方法示例
2017/11/23 Python
Python开发之pip安装及使用方法详解
2020/02/21 Python
Hawes & Curtis官网:英国经典品牌
2019/07/27 全球购物
农林环境专业求职信
2014/03/13 职场文书
班级课外活动总结
2014/07/09 职场文书
导游词之河北野三坡
2019/12/11 职场文书