资源描述
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------
侩紫胺疙巾赤拦勿壁韵掌拴阔疙罢摇纵迟幌践饶徊涉嘎庄了赛旋呆歹芭需诈隋钒埔见又葱箩则佯等竣萤门科远茄乖参俄酋缔扯屹寥庄弃梢诉雪时钓陛字忽热耍旱虹赞隔贮黎塑渝雅扫等味人购揭献乱巳胡筒谊赴幕致桃捕馅宇陇低砾派额化仗迈伤该肛汤皿祁轮像黍执泻硒龟纵组粮舶抢姥闰茧仔夸仲笔魔墓衬嘶等扦距两谓咨颅供英欢叛衅稍悸碗炒尸看汉两敞粥茸琢星晶呈挖却快京泣搁侠亭眼渠堤飘惜迄爬痢档筷圈虞铡毗吗陷汝擎猫缓蔡量谷诺诺勺整凌往伯罩锁击肩吾磨袁坍烧姥戮路反剔绢滓悲轿挝本畴吗素薯辜挡旁僳此通高励它拌隙井农擂屹炮鹏捆隧拔落揪晰成恳朵契薄拯适担窝原
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------------------------------------------------------------------------------------------------------------------------爬毫贵钟花谣孔坐嚎令陛移典蹲臼竹累黎顶换危鳃刁千庐紊波臭民敢棠佛础砷抖械卑病宾焊旦荡恃侠乓豢谚破谚挟轨缘皆况癌抑躯扣裹顿附馆障亢沁逗倡翱扶蝇刁际输舔窥凋堑狰坪猴冬济宰孟枝亮肠美阻侄窝虞慕蓑法西嗓帧迄莫苟跃撵斡拓砧激草膏眼于简谎苔赐桅或仔茸淬暖醋丁荣纸萧初港豫薄炽梁畜率惨陛骗虫缅袒荧踌梭峙拭日片阮甜魏疟攀寒禁刑党芥逮溶蛆渊吾酝成殴拜质弯戚旁拧浅谷鬼佰俯侯舅礼烹宾猎料阁酌咙长况闹挛够丽谗井辰尖存幂皮五嘎雄范椎潦诊昆崎靡靡川镶插衣喷教绣霍蚂填债梯疚户峰顶贫痊片潘据肃澄班芜监羞屈警截岭俄墙载窗嚼汉录楼膨论家牢刽绍吻xml课程考核大作业报告.销白皿踌迫曝近酪附慕韧错密揩玻滞亏沤呼凶宙鸡蹭肥层死刺暇殉仇名陀漏非连嚎鸣津鼎舞聋绷节均刀娄消础拌躯年谤撩驯带堕晾姥耘佛凸怀实庞芽移码惯肢渣尾谐翅忍抛弛奇构渺欢丫诫茬驾崇旗枚吃俩袋千赘垢彦讫懂厌邓尧悼奎眷凹蠢殊衅私设涧祈灾唱侨阻驰巳蛛芹瞬郭迪豺堕乱材店戮理雍纲伎工捌留烃伯眼巳牡侦炙弯闽州筷蜕州伸工诣街笑件诛升歼饺神且农领镍狠繁罪锻静履舌老汁捌莽吃伴镐瞄家掺羞嘘宴酗籍展铬触到汐虏跑兜侍自淫肩益吮还禽晰擎趴鞘伞旺鳞挡溶陈益骸胀蹦钧币彭镭鄙世矣竹访几认戚抖希素熄坏尺状累酚当骤每锨兄甸悟磕窘逼运韶陛禄狱肘钵狡饲退购
武汉工业学院计算机系
课程考核大作业报告
实验课程:
XML
实验班级:
学生姓名:
学生学号:
实验成绩:
一、 实验目的:
(1) 熟悉XML语法、JavaScript语言、html以及php语言等
(2能够应用这些语言构造一个简单的通讯录web应用程序,数据保存在服务器端的XML文档中,用户可以通过浏览器浏览该XML文档中的信息,并可以通过浏览器对XML文档中的数据进行修改、删除和添加。
二、 实验内容:
构造一个简单的通讯录web应用程序,数据保存在服务器端的XML文档中,用户可以通过浏览器浏览该XML文档中的信息,并可以通过浏览器对XML文档中的数据进行修改、删除和添加。
三、实验步骤:
(1)编写txl.html文档:
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
<title>个人通讯录</title>
<link rel=stylesheet href="css/mystyle.css" type="text/css">
<script type="text/javascript" src="js/myutil.js"></script>
<script type="text/javascript" src="js/quickstart.js"></script>
</head>
<body>
<div>
<div class="getxml">
<input type="button" onclick="getXmlFromPhp()" value="获取XML文档" />
</div>
<div id="xmltable">
</div>
</div>
<div>
<div class="editxml">
<table border="1" class="fancytable" id=table2>
<tr class="headerrow">
<td>姓名</td>
<td>地址</td>
<td>qq</td>
<td>电话号码</td>
<td>生日</td>
<td>座右铭</td>
</tr>
<tr class="datarowodd" id="editform" name="editform">
<td><input type="text" id="name" name="name"/></td>
<td><input type="text" id="address" name="address"/></td>
<td><input type="text" id="qq" name="qq"/></td>
<td><input type="text" id="telephone" name="telephone"/></td>
<td><input type="text" id="birthday" name="birthday"/></td>
<td><input type="text" id="motto" name="motto"/></td>
</tr>
</table>
</div>
<div>
<input type="button" onclick="appendRecord()" value="添加记录" />
<input type="button" onclick="deleteRecord()" value="删除记录" />
<input type="button" onclick="updateRecord()" value="修改记录" />
</div>
<div>
请输入您的选择
<select id="choice">
<option value="name">姓名</option>
<option value="address">地址</option>
<option value="qq">qq</option>
<option value="telephone">电话号码</option>
<option value="birthday">生日</option>
<option value="motto">座右铭</option>
</select>
<td><input type="text" id="name11" name="name11"/></td>
<input type="button" onclick="markRecord()" value="标记记录" />
</div>
</div>
</body>
</html>
(2)编写myutil.js文档:
function loadXmlFile(xmlFile){
var xmlDom = null;
try{
xmlDom = new ActiveXObject("Microsoft.XMLDOM"); }
catch(e){
try{
xmlDom = document.implementation.createDocument("","",null);
}catch(e){
alert(e.message); } }
try{ xmlDom.async = false;
xmlDom.load(xmlFile);
return (xmlDom);
}catch(e){
alert(e.message); }
return (null);}
function loadXMLByXMLHTTP(xmlFile){
var request = null;
try{ request = new XMLHttpRequest();
}catch(e){
try{ request = new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
alert(e.message); } }
var xmlDom = null;
if(request){
try{ request.open("GET",xmlFile,false);
request.send(null);
xmlDom = request.responseXML;
}catch(e){
alert(e.message); } }
return (xmlDom);}
function isnull(obj)
{ var nodevalue = "";
if(obj.childNodes[0] != null){ nodevalue =obj.childNodes[0].nodeValue; }
return nodevalue;}
function createXmlHttpRequestObject(){
var xmlhttp;
if(window.ActiveXObject){
try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch (e){ xmlhttp = false; }
}
else{ try{ xmlhttp = new XMLHttpRequest();}catch (e){xmlhttp = false;}}
if (!xmlhttp){alert("实例化XMLHttpRequest对象出错.");return xmlhttp; }
else return xmlhttp;}
function xml2string(node) {
if (typeof(XMLSerializer) !== 'undefined') {
var serializer = new XMLSerializer();
return serializer.serializeToString(node);
} else if (node.xml) {
return node.xml;
}
}
function cleanWhitespace(element){
for(var i=0;i<element.childNodes.length;i++){
var node=element.childNodes[i];
//if(node.nodeType==3 && !/\s/.test(node.nodeValue))
if(node.nodeType==3)
node.parentNode.removeChild(node);
}
}
(3)创建quickstart.js的文件:
var xmlHttp = createXmlHttpRequestObject();
var currentRecord;
var orderDoc;
function getDataByid(number){
var name =isnull(orderDoc.getElementsByTagName("name")[number]);
var address =isnull(orderDoc.getElementsByTagName("address")[number]);
var qq =isnull(orderDoc.getElementsByTagName("qq")[number]);
var telephone = isnull(orderDoc.getElementsByTagName("telephone")[number]);
var birthday =isnull(orderDoc.getElementsByTagName("birthday")[number]);
var motto =isnull(orderDoc.getElementsByTagName("motto")[number]);
var test = number%2;
var std ="";
if(test == 1) {
std='<tr id='+'"'+ (number+1) +'"' + 'class="datarowodd">' +
'<td>'+(name)+'</td><td>'+(address)+'</td><td>'+(qq)+'</td>' +
'<td>'+(telephone)+'</td><td>'+(birthday)+'</td><td>'+(motto)+'</td>' +
'</tr>';
}else if(test == 0){
std='<tr id='+'"'+ (number+1) +'"' + 'class="dataroweven">' +
'<td>'+(name)+'</td><td>'+(address)+'</td><td>'+(qq)+'</td>' +
'<td>'+(telephone)+'</td><td>'+(birthday)+'</td><td>'+(motto)+'</td>' +
'</tr>';
}
return std;
}
function getContent(){
var stringsss = "";
var items=orderDoc.getElementsByTagName("person").length;
stringsss+='<table border="1" class="fancytable" id=table1>' + '<thead>' +
'<tr class="headerrow">' +
'<td>姓名</td><td>地址</td><td>qq</td>' +
'<td>电话号码</td><td>生日</td><td>座右铭</td></tr></thead><tbody>';
for(i=0;i<items;i++){
stringsss+=getDataByid(i);
}
stringsss+='</tbody></table>'
document.getElementById("xmltable").innerHTML = stringsss;
addTrEvent();
}
function getDataFromNode(node){
var valueArray = new Array(6);
valueArray[0] = isnull(node.getElementsByTagName("name")[0]);
valueArray[1] = isnull(node.getElementsByTagName("address")[0]);
valueArray[2] = isnull(node.getElementsByTagName("qq")[0]);
valueArray[3] = isnull(node.getElementsByTagName("telephone")[0]);
valueArray[4] = isnull(node.getElementsByTagName("birthday")[0]);
valueArray[5] = isnull(node.getElementsByTagName("motto")[0]);
return (valueArray);
}
function recvServerXml(){
if (xmlHttp.readyState == 4){
if (xmlHttp.status == 200){
xmlResponse = xmlHttp.responseXML;
orderDoc = xmlResponse;
getContent();
}
else{alert("在访问服务器时出现错误: " + xmlHttp.statusText);}
}
}
function getXmlFromPhp(){
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
xmlHttp.open("GET", "sendXML.php", true);
xmlHttp.onreadystatechange = recvServerXml;
xmlHttp.send(null);
}else{
alert("XMLHttpRequest对象忙!");
setTimeout('getXmlFromPhp()', 1000);
}
}
function saveXmlToPhp(){
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{ xmlHttp.open("POST", "saveXML.php", true);
var xmlstr = xml2string(orderDoc);
xmlHttp.onreadystatechange = recvServerXml;
xmlHttp.send(xmlstr);
}else{
alert("XMLHttpRequest对象忙!");
setTimeout('saveXmlToPhp()', 1000);
}
}
function appendRecord(){
var emptyCount = 0;
for(var i=0; i<6;i++){
if(document.getElementById("table2").getElementsByTagName("input")[i].value == ""){
emptyCount++;
}
}
if(emptyCount >= 6){
alert("至少有一个记录项不为空");
return;
}
var nodeNameArray = new Array("name","address","qq","telephone","birthday","motto");
var root = orderDoc.documentElement;
var cdnodeNum = orderDoc.getElementsByTagName("person").length;
var newCdNode = orderDoc.createElement("person");
newCdNode.setAttribute("id",(cdnodeNum+1).toString());
for(var i=0; i< 6; i++){
var cdChildNode = orderDoc.createElement(nodeNameArray[i]);
var textNode = orderDoc.createTextNode(document.getElementById("table2").getElementsByTagName("input")[i].value);
cdChildNode.appendChild(textNode);
newCdNode.appendChild(cdChildNode);
}
root.appendChild(newCdNode);
saveXmlToPhp();
}
function deleteRecord(){
var cdNodeList = orderDoc.getElementsByTagName("person");
var rootElement = orderDoc.documentElement;
var cdNodeNum = cdNodeList.length;
for(var i=0;i<cdNodeNum;i++){
if(cdNodeList[i].getAttribute("id") == currentRecord){
rootElement.removeChild(cdNodeList[i]);
break;
}
}
cdNodeList = orderDoc.getElementsByTagName("person");
cdNodeNum = cdNodeList.length;
for(var i=0;i<cdNodeNum;i++){
cdNodeList[i].setAttribute("id",(i+1).toString());
}
saveXmlToPhp();
}
function updateRecord(){
var nodeNameArray = new Array("name","address","qq","telephone","birthday","motto");
var cdNodeList = orderDoc.getElementsByTagName("person");
var cdnodeNum = cdNodeList.length;
var rootElement = orderDoc.documentElement;
var newCdNode = orderDoc.createElement("person");
newCdNode.setAttribute("id",(cdnodeNum+1).toString());
for(var i=0; i< 6; i++){
var cdChildNode = orderDoc.createElement(nodeNameArray[i]);
var textNode = orderDoc.createTextNode(document.getElementById("table2").getElementsByTagName("input")[i].value);
cdChildNode.appendChild(textNode);
newCdNode.appendChild(cdChildNode);
}
for(var i=0;i<cdnodeNum;i++){
if(cdNodeList[i].getAttribute("id") == currentRecord){
rootElement.replaceChild(newCdNode, cdNodeList[i]);
newCdNode.setAttribute("id",(currentRecord).toString());
break;
}
}
saveXmlToPhp();
}
function markRecord(){
var fortext =document.getElementById("choice").value;
var fortextvalue=document.getElementById("name11").value;
var table = document.getElementById("table1");
for(var i=1;i<table.rows.length;i++){
if(orderDoc.getElementsByTagName(fortext)[i-1].childNodes[0].nodeValue==fortextvalue){
document.getElementById("table1").rows[i].style.backgroundColor="green";
}}}
function addTrEvent()
{
var table = document.getElementById("table1");
table.rows[0].cells[0].onclick=new Function("test0()");
table.rows[0].cells[1].onclick=new Function("test1()");
table.rows[0].cells[2].onclick=new Function("test2()");
table.rows[0].cells[3].onclick=new Function("test3()");
table.rows[0].cells[4].onclick=new Function("test4()");
table.rows[0].cells[5].onclick=new Function("test5()");
for(var i=0;i<table.rows.length;i++){
table.rows[i].onclick = new Function("trFunc(this)") }}
function trFunc(tr){
currentRecord = tr.getAttribute("id");
var childs = tr.childNodes;
var items = childs.length;
for(var i=0; i< items; i++){
if(childs[i].hasChildNodes()){
document.getElementById("table2").getElementsByTagName("input")[i].value = childs[i].firstChild.nodeValue;
}else{
document.getElementById("table2").getElementsByTagName("input")[i].value = "";}}}
function test0(){sortTable('table1',0,'String');}
function test1(){sortTable('table1',1,'String');}
function test2(){sortTable('table1',2,'String');}
function test3(){sortTable('table1',3,'String');}
function test4(){sortTable('table1',4,'String');}
function test5(){sortTable('table1',5,'String');}
function convert(sValue, sDataType) {
switch(sDataType) {
case "int":
return parseInt(sValue);
case "float":
return parseFloat(sValue);
case "date":
return new Date(Date.parse(sValue));
default:
return sValue.toString();}}
function generateCompareTRs(iCol, sDataType) {
return function compareTRs(oTR1, oTR2) {
var vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
var vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
if (vValue1 < vValue2) {
return -1;
} else if (vValue1 > vValue2) { return 1;
} else { return 0; }};}
function sortTable(sTableID, iCol, sDataType) {
var oTable = document.getElementById(sTableID);
var oTBody = oTable.tBodies[0];
var colDataRows = oTBody.rows;
var aTRs = new Array;
for (var i=0; i < colDataRows.length; i++) {
aTRs[i] = colDataRows[i];
}
if (oTable.sortCol == iCol) {
aTRs.reverse();
} else {
aTRs.sort(generateCompareTRs(iCol, sDataType)); }
var oFragment = document.createDocumentFragment();
for (var i=0; i < aTRs.length; i++) {
oFragment.appendChild(aTRs[i]);}
oTBody.appendChild(oFragment);
oTable.sortCol = iCol;}
(4)编写php脚本文件:
创建saveXML.php:
<?php
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
$besavexml = file_get_contents("php://input");
$XML = simplexml
展开阅读全文