javascript操作xml(增删改查)例子代码
来源:互联网 发布:pcb激光钻孔机编程 编辑:程序博客网 时间:2024/05/08 04:05
自己做了一个小东西,不是很好,但是对初学来说是一个不错的例子!
包括了stu.hta(是HTML应用程序);
stu.xml
注意下面的HTML代码必须保存为后缀名为hta否则当对XML文件进行操作(增删改)的时候就会提示没有权限!!
文件stu.hta代码如下:
- <html>
- <head>
- <title> 数据岛的显示 </title>
- <style type="text/css">
- #findPanel
- {
- position:absolute;
- width:220px;
- border:1px solid #666666;
- }
- #findPanelTitle
- {
- height:10px;
- background-color:#336699;
- cursor:move;
- }
- #findPanelContent
- {
- padding:5px 5px 5px 5px;
- background-color:#6699CC;
- }
- </style>
- </head>
- <body>
- <SCRIPT LANGUAGE="JavaScript">
- <!--
- var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
- xmlDoc.async = false;
- xmlDoc.resolveExternals = false;
- xmlDoc.load("stu.xml");
- //alert(xmlDoc.xml);
- //显示数据
- function show(){
- var vbo = document.getElementById("s").value;
- if(vbo=="显示学生信息"){
- document.getElementById('info').style.visibility='visible';
- document.getElementById("s").value="隐藏学生信息";
- }else{
- document.getElementById('info').style.visibility='hidden';
- document.getElementById("s").value="显示学生信息";
- }
- }
- //查找
- function que(){
- document.getElementById("ad").style.visibility="visible";
- document.getElementById("qmd").style.visibility="visible";
- }
- /**
- * 解析XML文件函数
- * @param xmlDoc XML对象
- * @param name 属性名称 格式如:user.name
- */
- function getXMLProperty(xmlDoc, name) {
- var keys = name.split('.');
- var node = xmlDoc.documentElement;
- for(var i=0; i<keys.length; i++) {
- var childs = node.childNodes;
- var key = keys[i];
- for(var k=0; k<childs.length; k++) {
- var child = childs[k];
- if(child.nodeName == key) {
- if(child.childNodes.length == 1) {
- return child.text;
- } else {
- node = child;
- break;
- }
- }
- }
- }
- return "";
- }
- //返回父节点(通过节点名字和节点值)
- function getNod(nam,val){
- var node = xmlDoc.documentElement;
- var childs = node.childNodes;
- for (var i=0;i<childs.length ;i++ )
- {
- var child = childs[i];
- var childms = child.childNodes;
- for(var k=0;k<childms.length;k++){
- var childm = childms[k];
- if(childm.nodeName == nam && (childm.text).substring(0,6)==val){
- //alert(val);
- return child;
- }
- }
- }
- return '';
- }
- //通过父节点和子节点名返回子节点值
- function getNodVal(nods,nam){
- var childms = nods.childNodes;
- for(var k=0;k<childms.length;k++){
- var childm = childms[k];
- if(childm.nodeName == nam){
- //alert(childm.text);
- return childm.text;
- }
- }
- return '';
- }
- //通过父节点和子节点名返回子节点
- function getCurNod(nods,nam){
- var childms = nods.childNodes;
- for(var k=0;k<childms.length;k++){
- var childm = childms[k];
- if(childm.nodeName == nam){
- //alert(childm.text);
- return childm;
- }
- }
- return '';
- }
- //开始查找
- function query(){
- var renum = /^/d{5}$/;
- if(renum.exec(xh.value)){
- if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){
- var nod = getNod('学号',xh.value);
- //getNodVal(nod,'姓名');
- //getNodVal(nod,'性别');
- //getNodVal(nod,'籍贯');
- /*document.getElementById("xm").value=xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/姓名").text;
- document.getElementById("xb").value=xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/性别").text;
- document.getElementById("jg").value=xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/籍贯").text;
- document.getElementById("xh").disabled="true"; */
- document.getElementById("xm").value=getNodVal(nod,'姓名');
- document.getElementById("xb").value= getNodVal(nod,'性别');
- document.getElementById("jg").value= getNodVal(nod,'籍贯');
- }else{
- alert("该学号还没有被占用!");
- }
- }else{
- alert("学号非法!学号5位数字!");
- return false;
- }
- }
- //修改
- function mod(){
- if(info_check()){
- if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){
- if(confirm("确认修改?")){
- var nod = getNod('学号',xh.value);
- getCurNod(nod,'姓名').text=xm.value;
- getCurNod(nod,'性别').text=xb.value;
- getCurNod(nod,'籍贯').text=jg.value;
- /*
- xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/姓名").text=xm.value;
- xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/性别").text=xb.value;
- xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]").selectSingleNode("学生/籍贯").text=jg.value;
- */
- saveXML();
- //document.getElementById("xh").disabled="false";
- document.getElementById("xh").value="";
- document.getElementById("xm").value="";
- document.getElementById("xb").value="";
- document.getElementById("jg").value="";
- document.getElementById("ad").style.visibility="hidden";
- document.getElementById("qmd").style.visibility="hidden";
- alert("修改成功!");
- location.reload();
- }
- }else{
- alert("该学号还没有被占用!请按学号查询再进行修改!");
- return false;
- }
- }
- }
- //新增学生
- function add(){
- var vadd = document.getElementById("add").value;
- if(vadd=="新增"){
- document.getElementById("xh").value="";
- document.getElementById("xm").value="";
- document.getElementById("xb").value="";
- document.getElementById("jg").value="";
- document.getElementById("qmd").style.visibility="hidden";
- document.getElementById('info').style.visibility='hidden';
- document.getElementById("s").value="显示学生信息";
- document.getElementById("ad").style.visibility="visible";
- document.getElementById("add").value="保存";
- document.getElementById("can").style.visibility="visible";
- }else{
- if(info_check()){
- add_node();
- saveXML();
- document.getElementById("xh").value="";
- document.getElementById("xm").value="";
- document.getElementById("xb").value="";
- document.getElementById("jg").value="";
- document.getElementById("ad").style.visibility="hidden";
- document.getElementById("qmd").style.visibility="hidden";
- document.getElementById("add").value="新增";
- alert("新增成功!");
- location.reload();
- }
- }
- }
- //删除学生
- function del(){
- var renum = /^/d{5}$/;
- if(renum.exec(document.getElementById("xh").value)){
- if(xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]")){
- if(confirm("确认删除?")){
- /*var node = xmlDoc.selectSingleNode("/学生管理[学生/学号="+xh.value+"]");
- if(node.hasChildNodes()){
- var kids = node.childNodes;
- for(var i=0;i<kids.length;i++){
- del();
- }
- }
- node.parentNode.removeChild(node);
- */
- var nod = getNod('学号',xh.value);
- nod.parentNode.removeChild(nod);
- saveXML();
- can();
- alert("删除成功!");
- location.reload();
- }
- }else{
- alert("该学号还没有被占用!请按学号查询再进行修改!");
- return false;
- }
- }else{
- alert("学号非法!为5位数字!");
- return false;
- }
- }
- //取消新增
- function can(){
- document.getElementById("xh").value="";
- document.getElementById("xm").value="";
- document.getElementById("xb").value="";
- document.getElementById("jg").value="";
- document.getElementById("ad").style.visibility="hidden";
- document.getElementById("can").style.visibility="hidden";
- document.getElementById("qmd").style.visibility="hidden";
- document.getElementById("add").value="新增";
- }
- //增加结点
- function add_node(){
- var oxh = xmlDoc.createElement("学号");
- oxh.appendChild(xmlDoc.createTextNode(xh.value));
- var oxm = xmlDoc.createElement("姓名");
- oxm.appendChild(xmlDoc.createTextNode(xm.value));
- var oxb = xmlDoc.createElement("性别");
- oxb.appendChild(xmlDoc.createTextNode(xb.value));
- var ojg = xmlDoc.createElement("籍贯");
- ojg.appendChild(xmlDoc.createTextNode(jg.value));
- var oxs = xmlDoc.createElement("学生");
- oxs.appendChild(oxh);
- oxs.appendChild(oxm);
- oxs.appendChild(oxb);
- oxs.appendChild(ojg);
- var parent = xmlDoc.selectSingleNode("/学生管理");
- if(parent.hasChildNodes()) {
- parent.insertBefore(oxs,parent.firstChild);
- }else{
- parent.appendChild(oxs);
- }
- }
- //保存XML
- function saveXML(){
- xmlDoc.save("stu.xml");
- }
- //验证新增数据
- function info_check(){
- var renum = /^/d{5}$/;
- var rec = /^[/u4E00-/u9FA5]{2,5}$/;
- if(!renum.exec(document.getElementById("xh").value)){
- alert("学号非法!为5位数字!");
- return false;
- }
- if(!rec.exec(xm.value)){
- alert("姓名非法!只能是中文最少两个字,最多不得超过5个字!");
- return false;
- }
- //alert(xb.value!="男");
- switch(xb.value){
- case "男":break;
- case "女":break;
- default:alert("性别只能是/"男/"或/"女/"!"); return false;
- }
- if(!rec.exec(jg.value)){
- alert("籍贯非法!只能是中文最少两个字,最多不得超过5个字!!");
- return false;
- }
- return true;
- }
- //-->
- </SCRIPT>
- <input id="s" type=button value="显示学生信息" onclick="show();">
- <input id="que" type=button value="精确查询" onclick="que();">
- <input id="add" type=button value="新增" onclick="add();">
- <input id="can" type=button value="取消" onclick="can();" style="visibility:hidden">
- <br>
- <center>
- <div id="ad" style="visibility:hidden">
- <table><tr><td>学号:
- <input type=text id="xh" style="ime-mode:disabled" size=5 maxlength=5 onKeyPress="if ((event.keyCode<48 || event.keyCode>57)) event.returnValue=false"><!-- style 用于光闭输入法 onKeyPress 只能输入数字-->
- </td><td>姓名:
- <input type=text id="xm" size=10 maxlength=5>
- </td><td>性别:
- <input type=text id="xb" size=5 maxlength=5>
- </td><td>籍贯:
- <input type=text id="jg" size=10 maxlength=5>
- </td>
- </tr>
- </table>
- </div>
- <div id="qmd" style="visibility:hidden">
- <table>
- <tr align="center">
- <td></td>
- <td><input id="que" type=button value="查询" onclick="query();"></td>
- <td><input id="mod" type=button value="修改" onclick="mod();"></td>
- <td><input id="del" type=button value="删除" onclick="del();"></td>
- </tr>
- </table>
- </div>
- </center>
- <div id="findPanel">
- <div id="findPanelTitle">可拖动</div>
- <div id="findPanelContent">
- <input type="text" size="20" value="a" id="key" onkeydown="javascript:ChckSubmit(event);">
- <input type="button" value="查找" onclick="javascript:OnKeySubmit();">
- </div>
- </div>
- <script language="javascript">
- <!--
- var findPanel = document.getElementById("findPanel");
- var findPanelTitle = document.getElementById("findPanelTitle");
- var findPanelContent = document.getElementById("findPanelContent");
- var findPanel_orgnX = 50;
- var findPanel_orgnY = 50;
- //设置物件位置
- findPanel.style.pixelLeft = document.body.scrollLeft + findPanel_orgnX;
- findPanel.style.pixelTop = document.body.scrollTop + findPanel_orgnY;
- //================================================================================
- var foundCnt = 0; //已经找到了的结果的数量
- //查找入口函数
- function Find(key)
- {
- if (key == "")
- {
- return;
- }
- if (document.all)
- {
- IEFind(key);
- }
- else
- {
- NSFind(key);
- }
- }
- //浏览器为 IE 系列
- function IEFind(key)
- {
- var rng = document.body.createTextRange();
- var found = false;
- for (var i=0; i<=foundCnt && (found=rng.findText(key)); i++)
- {
- rng.moveStart("character", 1); //找到,后移一位以查找下一个
- }
- if (found)
- {
- rng.moveStart("character", -1);
- rng.findText(key);
- rng.select();
- rng.scrollIntoView();
- foundCnt++;
- }
- else
- {
- if (foundCnt > 0)
- {
- //已经查找一遍,找到有符合条件的结果,重新开始查找
- foundCnt = 0;
- IEFind(key);
- }
- else
- {
- //已经查找一遍,没有找到符合条件的结果
- alert("文档搜索完毕。");
- }
- }
- }
- //浏览器为 NS 系列
- function NSFind(key)
- {
- if (window.find(key))
- {
- foundCnt++;
- }
- else
- {
- var found = false;
- while (window.find(key, false, true))
- {
- found = true;
- }
- if (found)
- {
- //已经查找一遍,找到有符合条件的结果,重新查找也已经开始
- foundCnt = 1;
- }
- else
- {
- //已经查找一遍,没有找到符合条件的结果
- alert("文档搜索完毕。");
- }
- }
- }
- function OnKeySubmit()
- {
- var key = document.getElementById("key");
- Find(key.value);
- }
- function ChckSubmit(e)
- {
- if (e.keyCode == 13)
- {
- OnKeySubmit();
- }
- }
- //================================================================================
- function RePosFindPanel()
- {
- findPanel.style.pixelLeft = document.body.scrollLeft + findPanel_orgnX;
- findPanel.style.pixelTop = document.body.scrollTop + findPanel_orgnY;
- }
- document.body.onscroll = RePosFindPanel;
- document.body.onresize = RePosFindPanel;
- //================================================================================
- //拖拽过程中相关变量
- var draging = false; //是否处于拖拽中
- var offsetX = 0; //X方向左右偏移量
- var offsetY = 0; //Y方向上下偏移量
- //准备拖拽
- function BeforeDrag()
- {
- if (event.button != 1)
- {
- return;
- }
- offsetX = document.body.scrollLeft + event.clientX-findPanel.style.pixelLeft;
- offsetY = document.body.scrollTop + event.clientY-findPanel.style.pixelTop;
- draging = true;
- }
- //拖拽中
- function OnDrag()
- {
- if(!draging)
- {
- return;
- }
- //更新位置
- findPanel_orgnX = event.clientX-offsetX;
- findPanel_orgnY = event.clientY-offsetY;
- event.returnValue = false;
- findPanel.style.pixelLeft = document.body.scrollLeft + event.clientX-offsetX;
- findPanel.style.pixelTop = document.body.scrollTop + event.clientY-offsetY;
- }
- //结束拖拽
- function EndDrag()
- {
- if (event.button != 1)
- {
- return;
- }
- draging = false;
- }
- findPanelTitle.onmousedown = BeforeDrag;
- document.onmousemove = OnDrag;
- findPanelTitle.onmouseup = EndDrag;
- //-->
- </script>
- <xml id="stu" src="stu.xml">
- </xml>
- <center>
- <div id="info" style="visibility:hidden">
- <table DATASRC=#stu border=1 style="background-color:#a9eeef; Border-color
- :red;" >
- <caption><h2>学生信息管理</h2></caption>
- <thead>
- <th>学号</th>
- <th>姓名</th>
- <th>性别</th>
- <th>籍贯</th>
- </thead>
- <tr>
- <td>
- <div DATAFLD="学号">
- </td>
- <td>
- <div DATAFLD="姓名">
- </td>
- <td>
- <div DATAFLD="性别">
- </td>
- <td>
- <div DATAFLD="籍贯">
- </td>
- </tr>
- </table>
- </div>
- </center>
- </body>
- </html>
xml文件如下(stu.xml)
- <?xml version="1.0" encoding="gb2312"?>
- <学生管理>
- <学生>
- <学号>97001</学号>
- <姓名>王五</姓名>
- <性别>男 </性别>
- <籍贯>上海</籍贯>
- </学生>
- <学生>
- <学号>97002</学号>
- <姓名>李四 </姓名>
- <性别>男 </性别>
- <籍贯>浙江 </籍贯>
- </学生>
- <学生>
- <学号>97006 </学号>
- <姓名>张三 </姓名>
- <性别>男</性别>
- <籍贯>浙江</籍贯>
- </学生>
- </学生管理>
- javascript操作xml(增删改查)例子代码
- javascript操作xml(增删改查)例子代码 收藏
- javascript操作Xml增删改查(IE下)
- javascript操作Xml增删改查(IE下)
- java代码对xml文件进行增删改查操作
- 代码操作XML(增删改)
- C#操作Xml(增删改查)练习
- 简单xml增删改查操作
- flex 操作xml 实现增删改查
- Flex操作XML包括增删改查
- flex 操作xml 实现增删改查
- C#操作XML增删改查
- XML文件操作,新建,增删改查
- DOM 操作XML 增删改查
- Python+Xml +操作+增删改查
- javascript js 操作数组 增删改查
- extjs常用增删改查操作代码
- XML 增删查改
- mergelist
- 2010软件收入百强企业出炉:华为居首
- 落户
- 谁能帮我看一下到底是什么问题?
- 大家好
- javascript操作xml(增删改查)例子代码
- MyEclipse 8.5 更改默认的工作空间
- QTP自动化设计模式(原创)
- 杂项
- 例解 autoconf 和 automake 生成 Makefile 文件
- 编程风格的认识
- javascript操作xml(增删改查)例子代码 收藏
- 图:[比赛打分策划方案]某航天大学韵律操比赛策划书
- POJ_2940