⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dom.asp

📁 本系统是一套完整游戏金币交易平台,可以建立一个网站实现游戏金币的在线交易
💻 ASP
字号:
<%
/*=========================================================================================
 * xml结点类
 =========================================================================================*/
function Node(name, type, value, deep) {
	//成员变量
	this.name = name;	//结点名称, 对于结点user[@value='sqy'], name='user', type='value', value='sqy'
	this.type = type;	//结点属性
	this.value = value;	//结点值

	//说明:type-value是属性-值对,因为xml可能有多个属性,所以应该用关联数组来描述, 例如:attributes = new Array(10,2) 10行2列
	//this.attributes = new Array();  //结点属性集合,*以后再做*
	
	this.deep = deep;	//结点深度	
	this.child = new Array();  //儿子结点集合
	

	//成员函数
	this.parseXML = parseXML;  //将该结点树解释成XML格式
	this.createEmptyNodeBatch = createEmptyNodeBatch;  //批量创建空Node

	this.findNodeByXPath = findNodeByXPath;  //根据xpath查找并返回结点,如果找到则返回node对象,如果没找到返回null
	this.getNodeValueByXPath = getNodeValueByXPath;  //根据xpath得到指定结点的值
	this.addChildNode = addChildNode;  //增加一孩子结点
}

//将该结点树解释成XML格式
function parseXML() {

}

//批量创建空Node
function createEmptyNodeBatch() {

}

//根据xpath查找并返回结点,如果找到则返回node对象,如果没找到返回null
function findNodeByXPath(xpath) {
	var item = divFormItemToNodeArr(xpath);
	return findNodeByVisit(this, item)
}

//根据xpath得到指定结点的值
function getNodeValueByXPath(xpath) {
	var tmpNode = this.findNodeByXPath(xpath);
	if(tmpNode!=null)
		return tmpNode.value=="null"?"":tmpNode.value;
	else
		return "";
}

//增加一孩子结点
function addChildNode(node) {
	this.child.push(node);
}
/*=========================================================================================*/
%>


<%
/*=========================================================================================
 * DOM类
 =========================================================================================*/
function DOM(name) {
	//成员变量
	this.name = name;  //DOM名称
	this.root = new Node(name,name,name,0);	//dom树的根结点
	
	//成员函数
	this.buildByXPathArr = buildByXPathArr;  //通过XPath数组构建dom对象
	this.buildByNodeArr = buildByNodeArr;  //通过Node数组构建dom对象
	this.getNodeByXPath = getNodeByXPath;  //根据xpath得到指定的dom结点
}

//通过XPath数组构建dom对象,数组元素类似于:"list[@type='UserDetail']/UserDetail[@rowNum='0']/classid[@value='abc']"
function buildByXPathArr(strArr) {  
	var allItem = new Array();
	for(var i=0; i<strArr.length; i++) {
		var itemNodeArr = divFormItemToNodeArr(strArr[i]);
		allItem.push(itemNodeArr);
	}
	createTree(this.root, allItem);
}

//通过Node数组构建dom对象,数组每个元素类似于:node[1~deep]
function buildByNodeArr(nodeArr) {  
	createTree(this.root, nodeArr);
}

//根据xpath得到指定的dom结点
function getNodeByXPath(xpath) {
	var item = divFormItemToNodeArr(xpath);
	return findNodeByVisit(this.root, item)
}

//-------------------------------------------

/*创建form元素结点树*/
function createTree(tree, items) {
	for(var i=0; i<items.length; i++) {
		createNodeByVisit(tree, items[i]);
	}
}

/*遍历创建一个结点*/
function createNodeByVisit(root, item) {
	var children = root.child;
	
	if(item.length>0) {
		var isFinded = false;  //在children中能否找到item[0]结点
		var subTreeRoot;

		for(var j=0; j<children.length; j++) {  //寻找结点
			if(children[j].name==item[0].name && children[j].type==item[0].type && children[j].value==item[0].value) {
				isFinded = true;
				subTreeRoot = children[j];
				break;
			}
		}
		
		if(!isFinded) {  //如果没找到
			//Response.Write(item[0].name+";"+item[0].type+";"+item[0].value+"<br>");
			subTreeRoot = item[0];
			children.push(item[0]);
		}
		
		item.splice(0,1);
		createNodeByVisit(subTreeRoot, item);  //继续遍历
	}
}

/*遍历查找一个结点*/
function findNodeByVisit(root, item) {
	//Response.Write(root.name+"-----");
	var children = root.child;

	if(item.length>0) {
		var isFinded = false;  //在children中能否找到item[0]结点
		var subTreeRoot;

		for(var j=0; j<children.length; j++) {  //寻找结点
			//if(item.length==1) {  //如果是末结点
			if(children[j].child.length==0) {  //如果是末结点,修改日期:2006-06-27
				if(children[j].name.toUpperCase()==item[0].name.toUpperCase()) {
					//Response.Write(children[j].name+";;");
					isFinded = true;
					subTreeRoot = children[j];
					break;
				}
			}
			else {
				if(children[j].name.toUpperCase()==item[0].name.toUpperCase() && children[j].type==item[0].type && children[j].value==item[0].value) {
					isFinded = true;
					subTreeRoot = children[j];
					break;
				}
			}
		}
		
		if(!isFinded) {  //如果没找到
			return null;
		}
		else if(isFinded && item.length==1) {  //如果找到了该结点,并且是item的未结点
			return subTreeRoot;
		}
		else if(item.length>1){
			item.splice(0,1);
			return findNodeByVisit(subTreeRoot, item);  //如果找到了该结点,但还不是未结点,继续遍历
		}

	}
}

/*将form或QueryString里的元素分割成node数组,item的样式:list[@type='UserDetail']/UserDetail[@rowNum='0']/classid[@value='01']*/
function divFormItemToNodeArr(item) {
	var nodesArr = new Array();

	var tmpArr = item.split("/");
	for(var i=0; i<tmpArr.length; i++) {
		var node = divStrToNode(tmpArr[i],i);
		nodesArr.push(node);
	}
	
	return nodesArr;
}

/*将字符串(如:list[@type='UserDetail'],list[@name='User'][@type='UserDetail']=123456)转换为结点对象*/
function divStrToNode(str, deep) {
	var nodeName = "";
	var nodeType = "";
	var nodeValue = "";

	var tmpArr = new Array();
	tmpArr = str.split("[@");
	if(tmpArr.length>0) nodeName = tmpArr[0];
	if(tmpArr.length>1) {
		/*
		tmpArr[1] = tmpArr[1].replace("']","");
		tmpArr = tmpArr[1].split("='");
		if(tmpArr.length>0) nodeType = tmpArr[0];
		if(tmpArr.length>1) nodeValue = tmpArr[1];
		*/
		tmpArr[1] = tmpArr[1].replace("']","");
		nodeType = tmpArr[1].substr(0, tmpArr[1].indexOf("='"));
		nodeValue = tmpArr[1].substring(tmpArr[1].indexOf("='")+2,tmpArr[1].length);	
		nodeValue = nodeValue.replace(/A1B2/g, "/")
	}
	//Response.Write("<br>"+nodeName+";"+nodeType+";"+nodeValue);
	var node = new Node(nodeName, nodeType, nodeValue, deep);
	return node;
}
/*=========================================================================================*/

%>




⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -