﻿// 加载xml文档
function loadXML(xmlFile)
{
    var xmlObj;
    if(window.ActiveXObject){
        xmlObj = new ActiveXObject("Microsoft.XMLDOM");
        xmlObj.async    = false;
        xmlObj.load(xmlFile);
    } else if (document.implementation&&document.implementation.createDocument) {
        xmlObj = document.implementation.createDocument("", "", null);
        xmlObj.load(xmlFile);
    } else {
        return null;
    }
    return xmlObj;
}
// 首先对xml对象进行判断
function checkXMLDocObj(xmlFile)
{
    var xmlDocObj = loadXML(xmlFile);
    if(xmlDocObj==null) {
        alert("您的浏览器不支持xml文件读取,于是本页面禁止您的操作,推荐使用IE5.0以上可以解决此问题!");
        //window.location.href="/index.html";
    }
    return xmlDocObj;
}

//
function getXMLArray(xmlDoc, name) {
	var keys = name.split("/");
	var node = xmlDoc.documentElement;      // 得到根节点
	//var node = xmlDoc;      // 得到根节点
	var rtn = new Array();
	var n = 0;


	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(i == keys.length-1) {
					rtn[n] = child;
					n++;
				} else {
					node = child;
					break;
				}
			}
		}
	}
	return rtn;
}
// 取值(firefox不支持)
/**
*  修改此函数可以支持Firefox
*/
function getvalue(node, name) {
	var keys = name.split("/");
	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) { 	// 如果没有字节点,返回值
					var strreturn = "";
					if(window.ActiveXObject) { //IE
						strreturn = child.text;
					} else { //Mozilla
						try	{
							strreturn = child.childNodes[0].nodeValue;
						} catch(ex)	{
							strreturn = "";
						}
					}
					return strreturn;
					// return child.text; firefox 不支持.text
				} else { // 还有子节点,继续分析
					node = child;
					return node;  //以对象型式返回
					break;
				}
			}
		}
	}

	return "";
}


/**
*功能: 按当前节点类型返回值或节点对象
* 判断当前节点类型是否为 3、4、8 是返回节点值
*/
function getnoteType(xmlObj) {
	var doc = null;   //返回参数
    if(typeof(xmlObj)=="number")return;

	// 以节点的值的型式作为参数返回
    if(xmlObj.nodeType==3 || xmlObj.nodeType==4 || xmlObj.nodeType==8){

        switch(xmlObj.nodeType){

            case 3://[TEXT型节点]
            doc = xmlObj.nodeValue;
            //针对混合节点的末节点为文本节点的情况
            //if(!xmlObj.nextSibling && xmlObj.previousSibling){
            //    document.write("<br>"+format.substr(0,format.length-24));
            //}
            break;


            case 4://[CDATA型节点]
			doc = xmlObj.nodeValue;
            break;


            case 8://[COMMENT型节点]
			doc = xmlObj.nodeValue
            break;

        }  //switch(xmlObj.nodeType){

	}  //if(xmlObj.nodeType==3 || xmlObj.nodeType==4 || xmlObj.nodeType==8){


	// 以节点为对象（父节点）的型式作为参数返回
    if(!xmlObj.hasChildNodes()){//[空无素（ELEMENT）或仅含属性（ATTRIBUTE）]

        doc = xmlObj;

    }

	return doc;
}
