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 相关文章推荐
LazyForm jQuery plugin 定制您的CheckBox Radio和Select
Oct 24 Javascript
brook javascript框架介绍
Oct 10 Javascript
AngularJS快速入门
Apr 02 Javascript
JS如何实现文本框随文本的长度而增长
Jul 30 Javascript
js实现无缝循环滚动
Jun 23 Javascript
bootstrap table分页模板和获取表中的ID方法
Jan 10 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
Dec 24 Javascript
在vscode里使用.vue代码模板的方法
Apr 28 Javascript
微信小程序模拟cookie的实现
Jun 20 Javascript
JavaScript学习笔记之数组基本操作示例
Jan 09 Javascript
小程序:授权、登录、session_key、unionId的详解
May 15 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 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数据库中并显示的实现代码
2010/05/27 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
PHP实现文件上传后台处理脚本
2020/03/04 PHP
论坛里点击别人帖子下面的回复,回复标题变成“回复 24# 的帖子”
2009/06/14 Javascript
JQuery页面图片切换和新闻列表滚动效果的具体实现
2013/09/26 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
JS折半插入排序算法实例
2015/12/02 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
2017/01/14 Javascript
带你快速理解javascript中的事件模型
2017/08/14 Javascript
小程序实现选择题选择效果
2018/11/04 Javascript
VUE基于NUXT的SSR 服务端渲染
2018/11/30 Javascript
让mocha支持ES6模块的方法实现
2020/01/14 Javascript
原生javascript制作的拼图游戏实现方法详解
2020/02/23 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
Array.filter中如何正确使用Async
2020/11/04 Javascript
[55:35]VGJ.S vs Mski Supermajor小组赛C组 BO3 第二场 6.3
2018/06/04 DOTA
Python实现的多线程http压力测试代码
2017/02/08 Python
Python subprocess模块常见用法分析
2018/06/12 Python
python连接mongodb密码认证实例
2018/10/16 Python
python快排算法详解
2019/03/04 Python
tensorflow通过模型文件,使用tensorboard查看其模型图Graph方式
2020/01/23 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
HTML5 Canvas 起步(1) - 基本概念
2009/05/12 HTML / CSS
保荐人的岗位职责
2013/11/19 职场文书
大一新生学期自我评价
2014/04/09 职场文书
优秀班主任经验交流材料
2014/06/02 职场文书
商铺租房协议书范本
2014/12/04 职场文书
2015毕业生自我评价范文
2015/03/02 职场文书
春风化雨观后感
2015/06/11 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
2016同学毕业寄语大全
2015/12/04 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书
详解mysql三值逻辑与NULL
2021/05/19 MySQL
深入讲解数据库中Decimal类型的使用以及实现方法
2022/02/15 MySQL