javascript操作xml(增刪改查)例子代碼hta版
來源:易賢網(wǎng) 閱讀:853 次 日期:2014-08-12 16:46:53
溫馨提示:易賢網(wǎng)小編為您整理了“javascript操作xml(增刪改查)例子代碼hta版”,方便廣大網(wǎng)友查閱!

包括了stu.hta(是HTML應(yīng)用程序);

stu.xml

注意下面的HTML代碼必須保存為后綴名為hta否則當對XML文件進行操作(增刪改)的時候就會提示沒有權(quán)限!!

文件stu.hta代碼如下:

代碼如下:

<html>

<head>

<title> 數(shù)據(jù)島的顯示 </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);

//顯示數(shù)據(jù)

function show(){

var vbo = document.getElementById("s").value;

if(vbo=="顯示學(xué)生信息"){

document.getElementById('info').style.visibility='visible';

document.getElementById("s").value="隱藏學(xué)生信息";

}else{

document.getElementById('info').style.visibility='hidden';

document.getElementById("s").value="顯示學(xué)生信息";

}

}

//查找

function que(){

document.getElementById("ad").style.visibility="visible";

document.getElementById("qmd").style.visibility="visible";

}

/**

* 解析XML文件函數(shù)

* @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 "";

}

//返回父節(jié)點(通過節(jié)點名字和節(jié)點值)

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 '';

}

//通過父節(jié)點和子節(jié)點名返回子節(jié)點值

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 '';

}

//通過父節(jié)點和子節(jié)點名返回子節(jié)點

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("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]")){

var nod = getNod('學(xué)號',xh.value);

//getNodVal(nod,'姓名');

//getNodVal(nod,'性別');

//getNodVal(nod,'籍貫');

/*document.getElementById("xm").value=xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/姓名").text;

document.getElementById("xb").value=xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/性別").text;

document.getElementById("jg").value=xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/籍貫").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("該學(xué)號還沒有被占用!");

}

}else{

alert("學(xué)號非法!學(xué)號5位數(shù)字!");

return false;

}

}

//修改

function mod(){

if(info_check()){

if(xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]")){

if(confirm("確認修改?")){

var nod = getNod('學(xué)號',xh.value);

getCurNod(nod,'姓名').text=xm.value;

getCurNod(nod,'性別').text=xb.value;

getCurNod(nod,'籍貫').text=jg.value;

/*

xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/姓名").text=xm.value;

xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/性別").text=xb.value;

xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]").selectSingleNode("學(xué)生/籍貫").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("該學(xué)號還沒有被占用!請按學(xué)號查詢再進行修改!");

return false;

}

}

}

//新增學(xué)生

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="顯示學(xué)生信息";

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();

}

}

}

//刪除學(xué)生

function del(){

var renum = /^\d{5}$/;

if(renum.exec(document.getElementById("xh").value)){

if(xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+xh.value+"]")){

if(confirm("確認刪除?")){

/*var node = xmlDoc.selectSingleNode("/學(xué)生管理[學(xué)生/學(xué)號="+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('學(xué)號',xh.value);

nod.parentNode.removeChild(nod);

saveXML();

can();

alert("刪除成功!");

location.reload();

}

}else{

alert("該學(xué)號還沒有被占用!請按學(xué)號查詢再進行修改!");

return false;

}

}else{

alert("學(xué)號非法!為5位數(shù)字!");

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="新增";

}

//增加結(jié)點

function add_node(){

var oxh = xmlDoc.createElement("學(xué)號");

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("學(xué)生");

oxs.appendChild(oxh);

oxs.appendChild(oxm);

oxs.appendChild(oxb);

oxs.appendChild(ojg);

var parent = xmlDoc.selectSingleNode("/學(xué)生管理");

if(parent.hasChildNodes()) {

parent.insertBefore(oxs,parent.firstChild);

}else{

parent.appendChild(oxs);

}

}

//保存XML

function saveXML(){

xmlDoc.save("stu.xml");

}

//驗證新增數(shù)據(jù)

function info_check(){

var renum = /^\d{5}$/;

var rec = /^[\u4E00-\u9FA5]{2,5}$/;

if(!renum.exec(document.getElementById("xh").value)){

alert("學(xué)號非法!為5位數(shù)字!");

return false;

}

if(!rec.exec(xm.value)){

alert("姓名非法!只能是中文最少兩個字,最多不得超過5個字!");

return false;

}

//alert(xb.value!="男");

switch(xb.value){

case "男":break;

case "女":break;

default:alert("性別只能是\"男\(zhòng)"或\"女\"!"); return false;

}

if(!rec.exec(jg.value)){

alert("籍貫非法!只能是中文最少兩個字,最多不得超過5個字!!");

return false;

}

return true;

}

//-->

</SCRIPT>

<input id="s" type=button value="顯示學(xué)生信息" 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>學(xué)號:

<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 只能輸入數(shù)字-->

</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;

//設(shè)置物件位置

findPanel.style.pixelLeft = document.body.scrollLeft + findPanel_orgnX;

findPanel.style.pixelTop = document.body.scrollTop + findPanel_orgnY;

//================================================================================

var foundCnt = 0; //已經(jīng)找到了的結(jié)果的數(shù)量

//查找入口函數(shù)

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)

{

//已經(jīng)查找一遍,找到有符合條件的結(jié)果,重新開始查找

foundCnt = 0;

IEFind(key);

}

else

{

//已經(jīng)查找一遍,沒有找到符合條件的結(jié)果

alert("文檔搜索完畢。");

}

}

}

//瀏覽器為 NS 系列

function NSFind(key)

{

if (window.find(key))

{

foundCnt++;

}

else

{

var found = false;

while (window.find(key, false, true))

{

found = true;

}

if (found)

{

//已經(jīng)查找一遍,找到有符合條件的結(jié)果,重新查找也已經(jīng)開始

foundCnt = 1;

}

else

{

//已經(jīng)查找一遍,沒有找到符合條件的結(jié)果

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;

//================================================================================

//拖拽過程中相關(guān)變量

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;

}

//結(jié)束拖拽

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>學(xué)生信息管理</h2></caption>

<thead> 

<th>學(xué)號</th>

<th>姓名</th>  

<th>性別</th>  

<th>籍貫</th> 

</thead> 

<tr> 

<td>  

<div DATAFLD="學(xué)號">  

</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"?>

<學(xué)生管理>

<學(xué)生>

 <學(xué)號>97001</學(xué)號>

 <姓名>王五</姓名>

 <性別>男 </性別>

 <籍貫>上海</籍貫>

</學(xué)生>

<學(xué)生>

 <學(xué)號>97002</學(xué)號>

 <姓名>李四 </姓名>

 <性別>男 </性別>

 <籍貫>浙江 </籍貫>

</學(xué)生>

<學(xué)生>

  <學(xué)號>97006 </學(xué)號>

  <姓名>張三 </姓名>

  <性別>男</性別>

  <籍貫>浙江</籍貫>

</學(xué)生>

</學(xué)生管理>

更多信息請查看IT技術(shù)專欄

更多信息請查看腳本欄目
易賢網(wǎng)手機網(wǎng)站地址:javascript操作xml(增刪改查)例子代碼hta版
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇剩?/div>

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 加入群交流 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)