实验结果要求如下:

解决步骤:

1、  首先是布局,左边用表格比较方便,右边是个div块。

2、  嵌入JavaScript脚本,由易到难,写定义全部显示的功能函数、显示姓名功能函数,显示属性功能函数。再定义查询、添加、删除功能块。

3、  在定义函数之前,先定义IE浏览器读取XML文件的语句。

var xmlDoc=new ActiveXObject("Msxml2.DOMDocument");

xmlDoc.async = false;

xmlDoc.load("Students.xml");

4、  xmlDoc.documentElement是”学生名单节点”.childNodes是”学生节点”

5、  nextsibling是”下一个兄弟节点”

6、  root.getElementsByTagName("姓名");是得到兄弟节点

7、  getAttribute("爱好");是得到属性节点

8、  建立节点如下:

var studentSet = xmlDoc.createElement("学生");  //建立学生节点

var studentID = xmlDoc.createElement("学号");

var studentName = xmlDoc.createElement("姓名");

var studentSex = xmlDoc.createElement("性别");

var studentMajor = xmlDoc.createElement("专业");

var studentMath = xmlDoc.createElement("Math");

var studentEnglish = xmlDoc.createElement("English");

9、  studentID.appendChild(xmlDoc.createTextNode(sidInput.value));//为学生节点赋值

10、          studentSet.appendChild(studentID);//为学生节点加入子节点。

11、          removeChild(stuNode);删除学生节点。

文件如下:

students.xml

<?xml version="1.0" encoding="GB2312"?>
<学生名单><学生><学号>201501110101</学号><姓名 爱好="足球">张三</姓名><性别>男</性别><专业>软件工程</专业><数学>85</数学><英语>90</英语></学生><学生><学号>201501110102</学号><姓名 爱好="篮球">李四</姓名><性别>女</性别><专业>软件工程</专业><数学>92</数学><英语>75</英语></学生><学生><学号>201501110103</学号><姓名>王五</姓名><性别>男</性别><专业>软件工程</专业><数学>79</数学><英语>88</英语></学生><学生><学号>201501110104</学号><姓名  爱好="音乐">赵六</姓名><性别>男</性别><专业>软件工程</专业><数学>79</数学><英语>88</英语></学生><学生><学号>201501110105</学号><姓名>刘七</姓名><性别>女</性别><专业>软件工程</专业><数学>90</数学><英语>74</英语></学生><学生><学号>201501110106</学号><姓名 爱好="上网">张君宝</姓名><性别>男</性别><专业>软件工程</专业><数学>91</数学><英语>67</英语></学生><学生><学号>201501110107</学号><姓名>崔春晓</姓名><性别>女</性别><专业>软件工程</专业><数学>70</数学><英语>83</英语></学生><学生><学号>201501110108</学号><姓名>倪冰</姓名><性别>女</性别><专业>软件工程</专业><数学>91</数学><英语>76</英语></学生><学生><学号>201501110109</学号><姓名>杨惠</姓名><性别>女</性别><专业>软件工程</专业><数学>78</数学><英语>90</英语></学生><学生><学号>201501110110</学号><姓名 爱好="音乐">李中华</姓名><性别>男</性别><专业>软件工程</专业><数学>98</数学><英语>79</英语></学生><学生><学号>201501110201</学号><姓名>张越</姓名><性别>男</性别><专业>网络工程</专业><数学>85</数学><英语>97</英语></学生><学生><学号>201501110202</学号><姓名>秦水天</姓名><性别>男</性别><专业>网络工程</专业><数学>52</数学><英语>76</英语></学生><学生><学号>201501110203</学号><姓名>张名扬</姓名><性别>男</性别><专业>网络工程</专业><数学>50</数学><英语>69</英语></学生><学生><学号>201501110204</学号><姓名>张楚越</姓名><性别>男</性别><专业>网络工程</专业><数学>82</数学><英语>77</英语></学生><学生><学号>201501110205</学号><姓名  爱好="上网">林子默</姓名><性别>女</性别><专业>网络工程</专业><数学>95</数学><英语>86</英语></学生><学生><学号>201501110206</学号><姓名  爱好="看电视">李子涵</姓名><性别>女</性别><专业>网络工程</专业><数学>77</数学><英语>88</英语></学生>
</学生名单>

用JavaScript语言通过DOM遍历XML文档.htm

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title></title>
<script type="text/javascript" src="loadxmldoc.js"></script>      </head>
<body><h1>实验8 JavaScript DOM操作XML显示查询添加删除</h1><table  cellpadding="0" cellspacing="0"><tr><td align="right">请输入学号:</td><td><input  type="text"  id="sid" /></td><td>       <input  type="button" value="全部显示" οnclick="showAll()" /></td><td><input  type="button" value="显示姓名" οnclick="showName()"/></td><td><input  type="button" value="显示属性" οnclick="showAttribute()"/></td></tr><tr><td align="right">姓名:</td><td><input type="text"  id="name" /></td><td colspan="3" rowspan="6"><div style="width: 400px;height: 400px; background: yellow; float: left; margin-left: 20px; margin-top: 20px" id="showArea" ></div> </td></tr><tr><td align="right">性别:</td><td><input  type="text" id="sex"/></td></tr><tr><td align="right">专业:</td><td><input  type="text" id="major"/></td></tr><tr><td align="right">数学:</td><td><input type="text" id="Math"/></td></tr><tr><td align="right">英语:</td><td><input  type="text" id="English"/></td></tr><tr><td align="right"><input  type="button" value="查询" οnclick="queryName()" /></td><td><input type="button" value="添加" οnclick="studentAdd()" /><input type="button" value="删除" οnclick="studentDelete()" /></td></tr></table></body><script>var xmlDoc=new ActiveXObject("Msxml2.DOMDocument"); xmlDoc.async = false; xmlDoc.load("Students.xml");function showAll(){        var root = xmlDoc.documentElement;         //全部显示功能块var first = root.childNodes[0];var content = first.text+"<br>"; var next = first.nextSibling;  while(next != null){ content += next.text+"<br />"; next = next.nextSibling; } document.getElementById("showArea").innerHTML = content;}function showName(){                    //显示姓名功能块var content="";var root=xmlDoc.documentElement;var studentlist=root.getElementsByTagName("姓名");for(var i=0;i<studentlist.length;i++){content+=studentlist[i].childNodes[0].nodeValue+"<br />"; content+=studentlist[i].text+"<br />";                   }document.getElementById("showArea").innerHTML=content;}function showAttribute(){                                //显示爱好属性功能块var content="";var root=xmlDoc.documentElement;var studentlist=root.getElementsByTagName("姓名");for(var i=0;i<studentlist.length;i++){var hobby=studentlist[i].getAttribute("爱好");if(hobby!=null)content+=studentlist[i].text+"的爱好是:"+hobby+"<br />";                     }if(content==null){alert("未找到爱好信息");return;}document.getElementById("showArea").innerHTML=content;       }function queryName(){var userInput=document.getElementById("name");         //查询姓名功能if(userInput.value==""){alert("请输入姓名!");return;}var result="";var oList=xmlDoc.documentElement.childNodes;for(var i=0;i<oList.length;i++){var node=xmlDoc.documentElement.childNodes[i];if(userInput.value==node.childNodes[1].text){result=node.text;break;}}if(result!=""){alert(result);}else{alert("未找到符合条件的同学");}}function studentAdd(){                                      //添加功能块var sidInput=document.getElementById("sid");var nameInput=document.getElementById("name");var sexInput=document.getElementById("sex");var majorInput=document.getElementById("major");var MathInput=document.getElementById("Math");var EnglishInput=document.getElementById("English");var studentSet = xmlDoc.createElement("学生");var studentID = xmlDoc.createElement("学号");var studentName = xmlDoc.createElement("姓名");var studentSex = xmlDoc.createElement("性别");var studentMajor = xmlDoc.createElement("专业");var studentMath = xmlDoc.createElement("Math");var studentEnglish = xmlDoc.createElement("English");studentID.appendChild(xmlDoc.createTextNode(sidInput.value));studentName.appendChild(xmlDoc.createTextNode(nameInput.value));studentSex.appendChild(xmlDoc.createTextNode(sexInput.value));studentMajor.appendChild(xmlDoc.createTextNode(majorInput.value));studentMath.appendChild(xmlDoc.createTextNode(MathInput.value));studentEnglish.appendChild(xmlDoc.createTextNode(EnglishInput.value)); studentSet.appendChild(studentID);  studentSet.appendChild(studentName);  studentSet.appendChild(studentSex);  studentSet.appendChild(studentMajor); studentSet.appendChild(studentMath);  studentSet.appendChild(studentEnglish);var parent = xmlDoc.selectSingleNode("/学生名单");  if(parent.hasChildNodes()){     parent.insertBefore(studentSet,parent.firstChild);     }else{     parent.appendChild(studentSet);     } }function studentDelete(){                                 //删除功能块var userInputTextBox = document.getElementById("sid");var userInputID = userInputTextBox.value;if (userInputID == "") {alert("请输入学生学号!");return;}var stu = xmlDoc.selectSingleNode("学生名单/学生/学号[text()='" + userInputID + "']");if (stu == null) {alert("未找到学号为“" + userInputID + "”的同学!");return;}var root = xmlDoc.documentElement;var stuNode = stu.parentNode;root.removeChild(stuNode);document.getElementById("name").value = "";document.getElementById("sex").value = "";document.getElementById("major").value = "";document.getElementById("Math").value = "";document.getElementById("English").value = "";alert("您已成功删除了学号为“" + userInputID + "”的同学!");ShowAll();}      </script>
</html>

显示结果如下:

全部显示:

显示姓名:

显示属性:

查询按钮:

添加按钮:

删除按钮:

点击全部显示后该学号同学消失:

注意:本实验仅仅用IE浏览器运行方可,其他浏览器不予执行;如果使用的是firefox,那么firefox有专门的加载DOM语法。

1、  在定义函数之前,先定义IE浏览器读取XML文件的语句。

var xmlDoc=new ActiveXObject("Msxml2.DOMDocument");

xmlDoc.async = false;

xmlDoc.load("Students.xml");

2、  xmlDoc.documentElement是”学生名单节点”.childNodes是”学生节点”

3、  nextsibling是”下一个兄弟节点”

4、  root.getElementsByTagName("姓名");是得到兄弟节点

5、  getAttribute("爱好");是得到属性节点

6、  建立节点如下:

var studentSet = xmlDoc.createElement("学生");  //建立学生节点

var studentID = xmlDoc.createElement("学号");

var studentName = xmlDoc.createElement("姓名");

var studentSex = xmlDoc.createElement("性别");

var studentMajor = xmlDoc.createElement("专业");

var studentMath = xmlDoc.createElement("Math");

var studentEnglish = xmlDoc.createElement("English");

7、  studentID.appendChild(xmlDoc.createTextNode(sidInput.value));//为学生节点赋值

8、  studentSet.appendChild(studentID);//为学生节点加入子节点。

9、  removeChild(stuNode);删除学生节点。

用JavaScript语言通过DOM遍历XML文档相关推荐

  1. java使用org.w3c.dom解析XML文档,创建、增删查改,保存,读取,遍历元素等操作

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用org.w3c.dom(java dom)解析XML文档,创建.增删查改,保存,读取,遍历元素等操作 在保存文件时需要载入crimso ...

  2. 【Qt】DOM读取XML文档

    00. 目录 文章目录 00. 目录 01. 概述 02. 开发环境 03. XML文档示例 04. DOM读取XML文档内容 05. 预留 06. 附录 01. 概述 DOM(Document Ob ...

  3. [Qt教程] 第27篇 XML(一)使用DOM读取XML文档

    [Qt教程] 第27篇 XML(一)使用DOM读取XML文档 楼主  发表于 2013-5-21 21:14:28 | 查看: 1001| 回复: 14 使用DOM读取XML文档 版权声明 该文章原创 ...

  4. php循环获取xml节点,PHP_PHP遍历XML文档所有节点的方法,本文实例讲述了PHP遍历XML文档 - phpStudy...

    PHP遍历XML文档所有节点的方法 本文实例讲述了PHP遍历XML文档所有节点的方法.分享给大家供大家参考.具体实现方法如下: 1. contact.xml代码: J J J Manager Nati ...

  5. java w3c xml_org.w3c.dom(java dom)解析XML文档

    首先来了解点Java DOM 的 API: 1.解析器工厂类:DocumentBuilderFactory 创建的方法:DocumentBuilderFactory dbf = DocumentBui ...

  6. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  7. java jdom进行xml的增删改差_java使用DOM对XML文档进行增删改查操作实例代码

    本文研究的主要是java使用DOM对XML文档进行增删改查操作的相关代码,具体实例如下所示. 源代码: package com.zc.homeWork18; import java.io.File; ...

  8. [Perl]利用XML::DOM生成XML文档

    Perl的XML::DOM功能很强大,利用它可以轻易地分析XML文档,也可以建立XML文档. 常用的类包括: XML::DOM::Node:所有类的基类,表示一个XML节点. XML::DOM::Pa ...

  9. VBS脚本学习:遍历XML文档

    一.脚本源码 使用VBS脚本遍历XML文件 Option Explicit '定义常量 Const NodeElement = 1 '元素 Const NodeText = 3 '文本 Const N ...

最新文章

  1. 【Python】简单的最优算法函数创建
  2. span 标记 width 设置
  3. 汇编语言(三十二)之读写文件
  4. 数据结构Java版之基数排序(四)
  5. 两种遮罩层的关闭方法
  6. 开课吧Java教程:如何用listFiles()方法
  7. STM32F091 can通信配置,can波特率计算方法
  8. 【面向对象】DDD(一):传统开发模式 VS DDD 开发模式
  9. 锐浪报表开发Web版
  10. 第二次团队作业 -- 预则立他山之石
  11. 再谈宋星博客的留言与seo培训联盟
  12. 《孙子兵法》中的企业领导艺术和方法
  13. Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】 1
  14. 互融云区块链溯源防伪系统开发,超高并发,全程追溯
  15. ROS 几款IDE,一些小坑
  16. utf8ascii编码
  17. FX2LP cy7c68013——Slave FIFO 与FPGA通信
  18. 初学者学习web前端用什么软件
  19. Scapy畸形报文攻击
  20. 基于aws cloudfront的前端应用灰度方案

热门文章

  1. 介绍项目前期调研、需求分析阶段的工作
  2. 今日所学(四) [当日学习内容检查,如果有误,望大家赐教]
  3. 报数游戏(2)--【英雄会】
  4. I/O输入输出——I/O设备(块设备与字符设备)
  5. Action与ActionListener的事件处理机制及实例分析
  6. k8s入门之Secret(十)
  7. c语言中生日蛋糕图片大全,简单生日蛋糕图片大全
  8. 崇尚个人英雄主义很难铸就优秀的网站设计公司
  9. 腾讯2013校园招聘技术类笔试题(高清完整版)
  10. 《白话深度学习与Tensorflow》学习笔记(7)RBM限制玻尔兹曼机