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 相关文章推荐
javascript 处理HTML元素必须避免使用的一种方法
Jul 30 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
JavaScript设计模式初探
Jan 07 Javascript
WebGL利用FBO完成立方体贴图效果完整实例(附demo源码下载)
Jan 26 Javascript
使用Ajax生成的Excel文件并下载的实例
Nov 21 Javascript
js实现省份下拉菜单效果
Feb 15 Javascript
jQuery ajax实现省市县三级联动
Mar 07 Javascript
Angular之toDoList的实现代码示例
Dec 02 Javascript
vue项目中使用百度地图的方法
Jun 08 Javascript
解决百度Echarts图表坐标轴越界的方法
Oct 17 Javascript
Electron整合React使用搭建开发环境的步骤详解
Jun 07 Javascript
vue 获取url参数、get参数返回数组的操作
Nov 12 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中substr_count()函数获取子字符串出现次数的方法
2016/01/07 PHP
PHP文件操作实例总结【文件上传、下载、分页】
2018/12/08 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
JS关闭窗口与JS关闭页面的几种方法小结
2013/12/17 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
JavaScript的Polymer框架中dom-repeat与VM的相关操作
2015/07/29 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
基于javascript实现简单的抽奖系统
2020/04/15 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
jQuery Validate设置onkeyup验证的实例代码
2016/12/09 Javascript
Javascript 对cookie操作详解及实例
2016/12/29 Javascript
Angular项目中$scope.$apply()方法的使用详解
2017/07/26 Javascript
JavaScript使用indexOf()实现数组去重的方法分析
2018/09/04 Javascript
详解微信小程序开发用户授权登陆
2019/04/24 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
Python中os和shutil模块实用方法集锦
2014/05/13 Python
python如何实现excel数据添加到mongodb
2015/07/30 Python
django站点管理详解
2017/12/12 Python
Python使用matplotlib实现绘制自定义图形功能示例
2018/01/18 Python
python time.sleep()是睡眠线程还是进程
2019/07/09 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
2020/11/24 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
美国受欢迎的女性牛仔裤品牌:DL1961
2016/11/12 全球购物
CheapTickets泰国:廉价航班,查看促销价格并预订机票
2019/12/28 全球购物
八项规定整改方案
2014/02/21 职场文书
分层教学实施方案
2014/03/19 职场文书
优秀毕业生的求职信
2014/07/21 职场文书
个人学习群众路线心得体会
2014/11/05 职场文书
试了下Golang实现try catch的方法
2021/07/01 Golang
俄罗斯十大城市人口排名,第三首都仅排第六,第二是北方首都
2022/03/20 杂记
Android开发手册Chip监听及ChipGroup监听
2022/06/10 Java/Android