`
SavageGarden
  • 浏览: 216752 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

XML---JS基本操作

    博客分类:
  • XML
阅读更多
最近用XML比较多,写点基本操作的总结,积累下
JS读取XML文件内容
很简单的一个页面,点击按钮时读取XML内容显示在DIV中
<html>
	<head>
		<title>解析XML</title>
	</head>
	<body>
		<div align="center">
			<input type="button" onclick="javascript:showListByXML()" value="解析XML" />
		</div>
		<div id="div1" align="center" style="position:absolute; border-width:1; border-style:outset;
							padding:1; width:262; height:25; left: 500; top: 150; visibility: hidden; background-color:#FFFFFF"></div>
	</body>
</html>

JS代码
<script LANGUAGE="JavaScript">
     /**
	*学生类实体
	*/
	function student(){
		var num="";
		var name="";
		var age="";
		var sex="";	
	}
	/**
	*加载XML文件
	*/
	var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
	xmlDoc.async = false;
	xmlDoc.load("xmlForYaWu.xml");
	
	/**
	*得到根节点
	*/
	var root = xmlDoc.getElementsByTagName("Students")[0];
	
	/**
	*得到所有子节点
	*/
	var Students = xmlDoc.getElementsByTagName("Students")[0].getElementsByTagName("Student");
	
	/**
	*赋值为一个子节点
	*/
	
	var xmlStudent;
	
	/**
	*赋值为一个学生类实体
	*/
	
	var jsStudent;
	
	/**
	*存储学生类实体的数组
	*/
	var StudentList = new Array(Students.length);
	
	/**
	*将XML中的节点、属性转化为JS学生类实体的属性,并存储到数组中
	*/
	for(var i = 0; i < Students.length; i++){
		xmlStudent = Students[i];
		jsStudent = new student();
		
		jsStudent.num = xmlStudent.getAttribute("num");
		jsStudent.name = xmlStudent.getAttribute("name");
		jsStudent.age = xmlStudent.getAttribute("age");
		jsStudent.sex = xmlStudent.getAttribute("sex");
		
		StudentList[i] = jsStudent;
	}
	
	/**
	*控制显示的DIV
	*/
	var div = document.getElementById("div1");
	
	/**
	*显示DIV
	*/
	function showDIV(){
		div.style.visibility = "visible";
	}
	
	/**
	*隐藏DIV
	*/
	function closeDIV(){
		div.style.visibility = "hidden";
	}
	
	/**
	*从存储着学生类实体的数组中遍历,写到table中格式化输出
	*/
	function showListByXML(){
		var table = "<table border=0 width='100%' bgcolor='#ddffFF' style='{border-color: #3388cc; border-style: solid; border-width: 1px;}'>"
			+"<tr align='center'>"
			+"<td>编号</td><td>姓名</td><td>年龄</td><td>性别</td><td>操作</td>"
			+"</tr>";
		for(var i = 0; i < StudentList.length; i++){
			jsStudent = StudentList[i];
			if(jsStudent!=null){
				table += "<tr align='center'><td>"+jsStudent.num+"</td><td>"+jsStudent.name+"</td><td>"+jsStudent.age+"</td><td>"+jsStudent.sex+"</td><td><a href=javascript:editEntity("+jsStudent.num+")>编辑</a>&nbsp&nbsp<a href=javascript:deleEntity("+jsStudent.num+")>删除</a></td></tr>";
			}
		}
		table += "<tr><td colspan=5><a href=javascript:addEntity()>添加</a>&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp<a href=javascript:closeDIV()>关闭</a></td></tr></table>";
		
		div.innerHTML = table;
		showDIV();
	}
	
	/**
	*根据学生编号得到要编辑的学生,
	*如果编号没有在数组中遍历出的学生实体中找到,
	*就创建一个新的学生实体
	*/
	function editEntity(num){
		closeDIV();
		var table = "<table border=0 width='100%' bgcolor='#ddffFF' style='{border-color: #3388cc; border-style: solid; border-width: 1px;}'>";
		for(var i = 0; i < StudentList.length; i++){
			jsStudent = StudentList[i];
			if(jsStudent!=null&&jsStudent.num==num){
					break;
			}else if(i==StudentList.length-1){
				jsStudent = new student();
				jsStudent.num = num;
				jsStudent.name = "";
				jsStudent.age = "";
				jsStudent.sex = "";
			}
		}
		table += "<tr align='center'><td>姓名</td><td><input type='text' id='"+jsStudent.num+"name' value="+jsStudent.name+"></td></tr>";
		table += "<tr align='center'><td>年龄</td><td><input type='text' id='"+jsStudent.num+"age' value="+jsStudent.age+"></td></tr>";
		table += "<tr align='center'><td>性别</td><td><input type='text' id='"+jsStudent.num+"sex' value="+jsStudent.sex+"></td></tr>";
		table += "<tr align='center'><td colspan=2><input type=button onclick=saveEntity("+num+") value='保存'/></td></tr></table>"
		div.innerHTML = table;
		showDIV();
	}
	
	/**
	*保存学生实体,转化为Elemental,保存到XML文件
	*/
	function saveEntity(num){
		var isNew = false;
		for(var i = 0; i < Students.length; i++){
			xmlStudent = Students[i];
			if(xmlStudent.getAttribute("num")==num){
				break;
			}else if(i==Students.length){
				xmlStudent = xmlDoc.CreateElement("Student");
				isNew = true;
			}
		}
		xmlStudent.setAttribute("num",num);
		xmlStudent.setAttribute("name",document.getElementById(num+"name").value);
		xmlStudent.setAttribute("age",document.getElementById(num+"age").value);
		xmlStudent.setAttribute("sex",document.getElementById(num+"sex").value);
		
		if(isNew){
			root.AppendChild(xmlStudent);
		} 
                //客户端保存有问题,先注掉
		//xmlDoc.save("xmlForYaWu.xml");
	}
	
	/**
	*添加一个学生实体,则将编号加1,然后调用编辑的方法
	*/
	function addEntity(){
		editEntity((Students.length+1));
	}
	
	/**
	*删除指定NUM的节点
	*/
	function deleEntity(num){
		xmlStudent = null;
		for(var i = 0; i < Students.length; i++){
			xmlStudent = Students[i];
			if(xmlStudent.getAttribute("num")==num){
				break;
			}
		}
		//删除、保存有问题,先注掉
		//xmlStudent.removeAll();
		//xmlDoc.save("xmlForYaWu.xml");
	}
</script>	


XML文件
<?xml version="1.0" encoding="GB2312"?>
<Students>
		<Student num="1" name="张三" age="22" sex="男"/>
		<Student num="2" name="李四" age="23" sex="男"/>
		<Student num="3" name="王五" age="24" sex="男"/>
</Students>


分享到:
评论

相关推荐

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

     好了,通过第三章的学习,我们已经了解了一些XML和DTD的基本术语,但是我们还不知道怎样来写这些文件,需要遵循什么样的语法,在下一章,将重点介绍有关撰写XML和DTD文档的语法。 第四章 XML语法 七.DTD的语法...

    as3比较详尽的工具类

    JavaScript.as ---------------------- javascript交互 HTTPS.as ---------------------- url随机数 SNS.as ---------------------- 各个sns网站的分享 timeline: prevPlay.as ---------------------...

    XML学习指南 电子书

    本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...

    XML高级编程

    总而言之,我们的显示主线包括:第8章:链接和查询第9章:操作XML 第13章:样式化第14章:WAP 阅读本书前的准备本书假设你已经掌握了一些关于HTML、JavaScript、Java和ASP的知识。如果你不熟悉Java或ASP,它并不会...

    XML学习指南经典中文版

    本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...

    ExtAspNet v2.2.1 (2009-4-1) 值得一看

    -修正绑定到Tree的XMLDocument中Icon属性映射错误(feedback:nopnop9)。 -修正HtmlEditor不能编辑的BUG(feedback:TheBox)。 -修正IE下有时会出现空白页面的情况(feedback:olivia919)。 +2009-12-06 v2.1.8 -...

    韩顺平PHP JS JQUERY 所有视频下载种子 货真价实

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    (全)传智播客PHP就业班视频完整课程

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    史上最全韩顺平传智播客PHP就业班视频,10月份全集

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    史上最全传智播客PHP就业班视频课,8月份视频

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    JavaScript王者归来part.1 总数2

     4.1 JavaScript的基本文法   4.2 常量和变量   4.3 表达式和运算符符   4.4 控制语句 句   4.5 总结   第5章 数据类型  5.1 基本数据类型   5.2 数组和对象   5.2.1 数组   5.2.2 对象--一个...

    史上最全韩顺平传智播客PHP就业班视频,9月份全集

    9-26 2 javascript基本介绍 9-26 3 javascript变量 标识符规范 9-26 4 javascript数据类型三大类型 9-26 5 javascript算术运算符及位运算 9-26 6 javascript三大流程控制 9-27 1 课程回顾 9-27 2 循环控制 金字塔的...

    XML学习指南

    本书回答了大部分基本的XML问题—什么是XML,为什么需要它,以及怎样使用它—并且介绍了到目前为止最重要、最实用的XML技术。本书的主题均是经过精心筛选的,对每一种主题的介绍都很有深度,并且避免了不完整的解决...

    JS操作XML中DTD介绍及使用方法分析

    本文实例讲述了JS操作XML中DTD介绍及使用方法。分享给大家供大家参考,具体如下: 什么是DTD,为什么需要DTD? DTD为英文Document Type Definition,中文意思为“文档类型定义”。DTD肩负着两重任务:一方面它帮助你...

    DWR.xml配置文件说明书(含源码)

    Singatures配置允许我们对DWR要操作的对象类型进行配置.对于了解JDK5泛型编程的开发人员来说下面的格式是很容易理解的. &lt;![CDATA[ import java.util.List; import com.example.Check; Check.setLotteryResults...

    某MTV视频系统Sql Sever数据库版

    第三部分:目录及基本操作说明 Part1:目录部分 admin ../管理目录 css ../css目录 ggg ../广告等页面 images../图片目录 Inc ../核心文件目录 index ../二级分类静态页面,建议不要修改。如在后台基本设置中修改了...

    javascript完全学习手册1 源码

    1.1.2 JavaScript的基本特点 2 1.1.3 常用的Web开发语言 3 1.2 JavaScript的应用 4 1.2.1 客户端应用 5 1.2.2 服务器端应用 5 1.3 在Web页面中使用JavaScript 5 1.3.1 HTML的基本结构 5 1.3.2 在HTML中嵌入...

Global site tag (gtag.js) - Google Analytics