xmlDom对象
//--------------------------------xml封装---------------------------------------- /** * 新的xml对象方法 */ var XmlUtil = (function(){ var useMozDom = document.implementation && document.implementation.createDocument; //用于判断是否支持火狐浏览器 if (useMozDom) { //判断是否使用火狐浏览器,IE返回false,火狐返回true // 给FF Node对象原型添加xml属性 (该Node是火狐浏览器的内置对象) Node.prototype.__defineGetter__("xml", function() { return new XMLSerializer().serializeToString(this, "text/xml"); }); // 给FF Node对象原型添加text属性 Node.prototype.__defineGetter__("text", function() { var text = [], childNodes = this.childNodes; for (var i = 0, n; i < childNodes.length; i++) { n = childNodes[i]; text.push(n.hasChildNodes() ? n.text : n.nodeValue); } return text.join(); }); } return { /** * 创建xml对象 */ createXmlDom : useMozDom ? function() { return document.implementation.createDocument("", "", null); } : function() { var MSXMLVers = ["MSXML2.DOMDocument.6.0","MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0","MSXML2.DOMDocument.3.0","MSXML2.DOMDocument"]; for (var i = 0; i < MSXMLVers.length; i++) { try { return new ActiveXObject(MSXMLVers[i]); } catch(e) {} } }, /** * 加载xml字符串,返回新的XML DOM对象 */ loadXML : useMozDom ? function(sXml) { // 遗留: DOMParser对象,最初是局部变量,每次都new一个,后来发现firefox3.0会出问题,于是改用全局变量只new一次 return new DOMParser().parseFromString(sXml.replace(/\>\s+\</g, "\>\<"), "text/xml"); } : function(sXml) { var doc = this.createXmlDom(); doc.loadXML(sXml.replace(/\>\s+\</g, "\>\<")); return doc; }, /** * 深度复制node节点 */ clone : function(doc, node) { // 获得XML DOM对象 doc = doc.ownerDocument || doc; // 获取XML DOM对象根节点 node = node.documentElement || node; var root, attrs, nodes, e; // 创建根节点,设置节点属性 root = doc.createElement(node.nodeName); attrs = node.attributes; if (attrs.length > 0) { for (var i = 0; i < attrs.length; i++) { root.setAttribute(attrs[i].nodeName, attrs[i].nodeValue); } } // 添加子节点 if (node.hasChildNodes()) { nodes = node.childNodes; for (var i = 0, n; i < nodes.length; i++) { n = nodes[i]; switch (n.nodeType) { case 1: // 递归添加元素节点 e = this.clone(doc, n); root.appendChild(e); break; case 3: // 添加文本节点 e = doc.createTextNode(n.data); root.appendChild(e); break; case 4: // 添加CDATA节点 e = doc.createCDATASection(n.data); root.appendChild(e); break; default: break; } } } return root; } } })(); /******************************************************************************* 函数名: XmlDom 功能: 初始化XMLDOM对象 *******************************************************************************/ function XmlDom() { //生成DOM对象 return XmlUtil.createXmlDom(); } /******************************************************************************* 函数名: creatRequestNode 功能: 封装的XML的根节点 输入doc为dom对象 cmd为字符串 返回结果格式如下: <request cmd="RSM_CMD_GET_MEAS_DATA"> </request> *******************************************************************************/ function creatRequestNode(doc,cmd) { if(null == doc) { return null; } var requestNode = doc.createElement("request"); //创建xml根节点 if(null != cmd) { var requestAttribute = doc.createAttribute("cmd"); //创建属性节点cmd requestAttribute.value = cmd; //为属性节点赋值 requestNode.setAttributeNode(requestAttribute); //设置节点属性 } return requestNode; } /******************************************************************************* 函数名: creatParaNode 功能: 封装的XML的根节点 输入doc为dom对象 cmd为字符串 返回结果格式如下: <para name="NEID"> </para> *******************************************************************************/ function creatParaNode(doc,name) //doc=xmldoc对象 name="USERID","UIPAGE" { if(null == doc) { return null; } var paraNode = doc.createElement("para"); //创建para节点 if(null != name) { var paraAttribute = doc.createAttribute("name"); //创建name属性 paraAttribute.value = name; //将参数name赋值给属性value paraNode.setAttributeNode(paraAttribute); //为para节点设置属性节点,属性值为paraAttribute } return paraNode //返回para节点 } /******************************************************************************* 函数名: creatSingleChildParaNode 功能: 封装一个带有子节点的参数para节点: 输入doc为dom对象 name,valueText为字符串 返回结果格式如下: <para name="NEID"> <value>0</value> </para> *******************************************************************************/ // 参数分别为:xmlDom对象 USERID常量 "admin" function creatSingleChildParaNode(doc,name,valueText) //valueText为随即产生的整数 { if(null == doc) { return null; } var paraNode = creatParaNode(doc,name); //创建para节点及节点属性name if(null != valueText) { var valueNode = doc.createElement("value"); //创建子节点value var textNode = doc.createTextNode(valueText); //创建文本节点:admin valueNode.appendChild(textNode); //value节点添加文本子节点 paraNode.appendChild(valueNode); //para节点添加子节点value } return paraNode //返回para节点 } /******************************************************************************* 函数名: creatMulitChildParaNode 功能: 封装的带多个子节点的para节点: 输入doc为dom对象 name为字符串, valueList为一维数组格式如:[valueText1,valueText2,valueText3] 返回结果格式如下: <para name="NEID"> <value>0</value> <value>0</value> <value>0</value> </para> *******************************************************************************/ function creatMulitChildParaNode(doc,name,valueList) { if(null == doc) { return null; } var paraNode = creatParaNode(doc,name); if(null != valueList) { for(var i in valueList) { var valueNode = doc.createElement("value"); var textNode = doc.createTextNode(valueList[i]); valueNode.appendChild(textNode); paraNode.appendChild(valueNode); valueNode = null; } } return paraNode } /******************************************************************************* 函数名: creatPropertyNode 功能: 封装的带一个子节点的参数para节点: 输入doc为dom对象 name,valueText为字符串 返回结果格式如下: <property name="questNum">1</property> *******************************************************************************/ function creatPropertyNode(doc,name,valueText) { if(null == doc) { return null; } var propertyNode = doc.createElement("property"); //创建property节点 if(null != name) { var propertyAttribute = doc.createAttribute("name"); //创建name属性节点 propertyAttribute.value = name; //为name属性节点赋值 propertyNode.setAttributeNode(propertyAttribute); //为property节点设置属性节点 } if(null != valueText) { var textNode = doc.createTextNode(valueText); //创建文本节点 propertyNode.appendChild(textNode); //为property节点设置文本子节点 } return propertyNode } /******************************************************************************* 函数名: creatTimeNode 功能: 输入doc为dom对象 seriesFlag,beginDay,beginTime,endDay,endTime为字符串, hotTime为一维数组 返回结果格式如下: <para name="TIME"> <value> <!-呈现方式标致,表示时间是分段的,枚举类型取值为"y"或"n"--> <property name="seriesFlag">y</property> <!--时间格式,HHMM为两位小时,取值从00到23为两位分钟,取值从00到59--> <property name="beginDay">20070111</property> <property name="beginTime">0800</property> <property name="endDay">20070111</property> <property name="endTime">1000</property> </value> </para> *******************************************************************************/ function creatTimeNode(doc,seriesFlag,beginDay,beginTime,endDay,endTime,hotTime) { if(null == doc) { return null; } var paraNode = creatParaNode(doc,"TIME"); if(null != hotTime) { beginDay = FormatDate(beginDay); endDay = FormatDate(endDay); for(var i in hotTime) { if(null == hotTime[i]) { continue; } var timeList = hotTime[i].split("-"); var valueNode = doc.createElement("value"); var beginDayNode = creatPropertyNode(doc,"beginDay",beginDay+timeList[0]); valueNode.appendChild(beginDayNode); var beginTimeNode = creatPropertyNode(doc,"beginTime",timeList[0]); valueNode.appendChild(beginTimeNode); var endDayStr = FormatDate(endDay) + FormatTime(endTime); var endDayNode = creatPropertyNode(doc,"endDay",endDay+timeList[1]); valueNode.appendChild(endDayNode); var endTimeNode = creatPropertyNode(doc,"endTime",timeList[1]); valueNode.appendChild(endTimeNode); paraNode.appendChild(valueNode); } } else { var valueNode = doc.createElement("value"); if(null != beginDay) { var beginDayStr = FormatDate(beginDay) + FormatTime(beginTime); var beginDayNode = creatPropertyNode(doc,"beginDay",beginDayStr); valueNode.appendChild(beginDayNode); } if(null != beginTime) { var beginTimeNode = creatPropertyNode(doc,"beginTime",FormatTime(beginTime)); valueNode.appendChild(beginTimeNode); } if(null != endDay) { var endDayStr = FormatDate(endDay) + FormatTime(endTime); var endDayNode = creatPropertyNode(doc,"endDay",endDayStr); valueNode.appendChild(endDayNode); } if(null != endTime) { var endTimeNode = creatPropertyNode(doc,"endTime",FormatTime(endTime)); valueNode.appendChild(endTimeNode); } paraNode.appendChild(valueNode); /* if(null != hotTime) { for(var i in hotTime) { if(null == hotTime[i]) { continue; } var hotTimeValueNode = doc.createElement("value"); var textNode = doc.createTextNode(hotTime[i]); hotTimeValueNode.appendChild(textNode); paraNode.appendChild(hotTimeValueNode); } } */ } //alert(paraNode.xml) return paraNode } /******************************************************************************* 函数名: creatTimeNodeNotFormat 功能: 输入doc为dom对象 beginDay,beginTime,endDay,endTime为字符串, hotTime为一维数组 返回结果格式如下: <para name="TIME"> <value> <!--时间格式,HHMM为两位小时,取值从00到23为两位分钟,取值从00到59--> <property name="beginDay">20070111</property> <property name="beginTime">0800</property> <property name="endDay">20070111</property> <property name="endTime">1000</property> </value> </para> *******************************************************************************/ function creatTimeNodeNotFormat(doc,beginDay,beginTime,endDay,endTime,hotTime) { if(null == doc) { return null; } var paraNode = creatParaNode(doc,"TIME"); var valueNode = doc.createElement("value"); if(null != beginDay) { var beginDayNode = creatPropertyNode(doc,"beginDay",beginDay); valueNode.appendChild(beginDayNode); } if(null != beginTime) { var beginTimeNode = creatPropertyNode(doc,"beginTime", beginTime); valueNode.appendChild(beginTimeNode); } if(null != endDay) { var endDayNode = creatPropertyNode(doc,"endDay", endDay); valueNode.appendChild(endDayNode); } if(null != endTime) { var endTimeNode = creatPropertyNode(doc,"endTime", endTime); valueNode.appendChild(endTimeNode); } paraNode.appendChild(valueNode); if(null != hotTime) { for(var i in hotTime) { if(null == hotTime[i]) { continue; } var hotTimeValueNode = doc.createElement("value"); var textNode = doc.createTextNode(hotTime[i]); hotTimeValueNode.appendChild(textNode); paraNode.appendChild(hotTimeValueNode); } } return paraNode } function FormatDate(sDate) { if(!sDate) { return "00000000"; } var dateList = sDate.split("-"); if(dateList.length != 3) { return "00000000"; } if(dateList[0].length != 4) { return "00000000"; } if(1 == dateList[1].length) { dateList[1] = "0" + dateList[1]; } if(1 == dateList[2].length) { dateList[2] = "0" + dateList[2]; } return dateList.join(""); } function FormatTime(sTime) { if(!sTime) { return "0000"; } if(sTime.length > 5) { sTime = sTime.substr(0,5); } var timeList = sTime.split(":"); if(timeList.length < 2) { return "0000"; } for(var i in timeList) { if(1 == timeList[i].length) { timeList[i] = "0" + timeList[i]; } } return timeList.join(""); } /* function FormatTime(sTime) { if(!sTime) { return "0000"; } var timeList = sTime.split(":"); if(timeList.length != 2) { return "0000"; } if(1 == timeList[0].length) { timeList[0] = "0" + timeList[0]; } if(1 == timeList[1].length) { timeList[1] = "0" + timeList[1]; } return timeList.join(""); } */ /* function creatTimeNode(doc,seriesFlag,beginDay,beginTime,endDay,endTime,hotTime) { if(null == doc) { return null; } var paraNode = creatParaNode(doc,"TIME"); var valueNode = doc.createElement("value"); if(null != seriesFlag) { seriesFlagNode = creatPropertyNode(doc,"seriesFlag",seriesFlag) valueNode.appendChild(seriesFlagNode); } if(null != beginDay) { var beginDayNode = creatPropertyNode(doc,"beginDay",beginDay) valueNode.appendChild(beginDayNode); } if(null != beginTime) { var beginTimeNode = creatPropertyNode(doc,"beginTime",beginTime) valueNode.appendChild(beginTimeNode); } if(null != endDay) { var endDayNode = creatPropertyNode(doc,"endDay",endDay) valueNode.appendChild(endDayNode); } if(null != endTime) { var endTimeNode = creatPropertyNode(doc,"endTime",endTime) valueNode.appendChild(endTimeNode); } paraNode.appendChild(valueNode); if(null != hotTime) { for(var i in hotTime) { if(null != hotTime[i]) { continue; } var hotTimeValueNode = doc.createElement("value"); var textNode = doc.createTextNode(hotTime[i]); hotTimeValueNode.appendChild(textNode); paraNode.appendChild(hotTimeValueNode); } } return paraNode } */ /******************************************************************************* 函数名: creatMulitChildValueNode 功能: 封装的带多个子节点的value节点: 输入doc为dom对象 name为字符串, valueList为一维数组格式如:[valueText1,valueText2,valueText3] 返回结果格式如下: <value> <property name="conditionName">101</property> <property name="operator">less than or equal to</property> <property name="value">1000</property> </value> *******************************************************************************/ function creatMulitChildValueNode(doc,name,valueList) { if(null == doc) { return null; } var valueNode = doc.createElement("value"); if(null != name) { var valueAttribute = doc.createAttribute("name"); valueAttribute.value = name; valueNode.setAttributeNode(valueAttribute); } if(null != valueList) { var attName = "" for(var i in valueList) { if(null == valueList[i]) { continue; } switch(i) { case "0": attName = "conditionName" break; case "1": attName = "operator" break; default: attName = "value" break; } var propertyNode = creatPropertyNode(doc,attName,valueList[i]) if(propertyNode) { valueNode.appendChild(propertyNode); } propertyNode = null; } } return valueNode } /******************************************************************************* 函数名: creatValueNode 功能: 封装的带多个子节点的value节点: 输入doc为dom对象 conditionName,operator,为字符串, valueList为一维数组格式如:[valueText1,valueText2,valueText3] 返回结果格式如下: <value> <property name="conditionName">101</property> <property name="operator">less than or equal to</property> <property name="value">valueText1</property> <property name="value">valueText2</property> <property name="value">valueText3</property> </value> *******************************************************************************/ function creatValueNode(doc,conditionName,operator,valueList) { if(null == doc) { return null; } var valueNode = doc.createElement("value"); if(null != conditionName) { var conditionNameNode = creatPropertyNode(doc,"conditionName",conditionName); if(conditionNameNode) { valueNode.appendChild(conditionNameNode); } } if(null != operator) { var operatorNode = creatPropertyNode(doc,"operator",operator); if(operatorNode) { valueNode.appendChild(operatorNode); } } if(null != valueList) { for(var i in valueList) { if(null == valueList[i]) { continue; } var propertyNode = creatPropertyNode(doc,"value",valueList[i]); if(propertyNode) { valueNode.appendChild(propertyNode); } propertyNode = null; } } return valueNode } /******************************************************************************* 函数名: creatMultiValueNode 功能: 创建多值过滤的value节点: 输入doc为dom对象 conditionName,operator,为字符串, valueList为一维数组格式如:[valueText1,valueText2,valueText3] 返回结果格式如下: <value> <property name="conditionName">101</property> <property name="operator">less than or equal to</property> <property name="value">valueText1;valueText2;valueText3</property> </value> *******************************************************************************/ function creatMultiValueNode(doc,conditionName,operator,valueList) { if (null == doc) { return null; } var valueNode = doc.createElement("value"); if (null != conditionName) { var conditionNameNode = creatPropertyNode(doc, "conditionName", conditionName); if(conditionNameNode) { valueNode.appendChild(conditionNameNode); } } if (null != operator) { var operatorNode = creatPropertyNode(doc, "operator", operator); if(operatorNode) { valueNode.appendChild(operatorNode); } } if (null != valueList) { var sValue = ""; if (valueList.length >= 1)//多值用;号分隔. { sValue = valueList.join(";"); } else { sValue = valueList[0]; } var propertyNode = creatPropertyNode(doc, "value", sValue); if (propertyNode) { valueNode.appendChild(propertyNode); } propertyNode = null; } return valueNode; } /** * 函数名:createPropertyValueNode * 功 能:创建如下格式的value节点,为后续网络分析报告使用 * 参 数:id ,就是属性为id的值 * value ,就是属性为value的值 * 返回值:oValueNode 。格式如下: * <value> <property name="id">p_1003</property> <property name="value">0</property> </value> */ function createPropertyValueNode(oDoc, sId, sValue) { if(null == oDoc) { return null; } var oValueNode = oDoc.createElement("value"); //<property name="id">p_1003</property> var oPropertyId = creatPropertyNode(oDoc, "id", sId); //<property name="value">0</property> var oPropertyValue = creatPropertyNode(oDoc, "value", sValue); oValueNode.appendChild(oPropertyId); oValueNode.appendChild(oPropertyValue); return oValueNode; } /******************************************************************************* 函数名: creatOrderConditionNode 功能: 封装的带多个子节点的value节点: 输入doc为dom对象 conditionName value为字符串, 返回结果格式如下: <para name="ORDER_CONDITION"> <value> <property name="conditionName">0</property> <property name="operator">ASC</property> </value> </para> *******************************************************************************/ function creatOrderConditionNode(doc,conditionName,operator) { if(null == doc) { return null; } var paraNode = creatParaNode(doc,"ORDER_CONDITION"); var operatorNode = creatValueNode(doc,conditionName,operator); paraNode.appendChild(operatorNode); return paraNode; } function creatConditionGroupNode(doc) { if(null == doc) { return null; } return doc.createElement("conditionGroup"); } /******************************************************************************* 函数名: creatRecordNode 功能: 输入doc为dom对象 参数questNum,beginRecord,endRecord,isSample,dispachRecord均为整型 返回结果格式如下: <!-可选参数,查询的记录范围--> <para name="RECORD_THRESHOLD"> <value> <!--必选参数,UI请求的次数,CHR应用--> <property name="questNum">1</property> <!--获取的记录数范围,起始(注:当请求所有记录时填写特殊值-1)--> <property name="beginRecord">1</property> <!--获取的记录数范围,终止--> <property name="endRecord">1000</property> <!--必选参数,是否需要抽样,1:表示压缩;0表示不压缩--> <property name="isSample">0</property> <!--必选参数,UI反填的参数,CHR应用--> <property name="dispatchRecord">500</property> </value> </para> *******************************************************************************/ function creatRecordNode(doc,questNum,beginRecord,endRecord,isSample,dispatchRecord) { if(null == doc) //判断Dom是否为空 { return null; } var paraNode = creatParaNode(doc,"RECORD_THRESHOLD"); //创建para节点,参数为记录入口 var valueNode = doc.createElement("value"); //创建value节点 //允许数字0的通过 if(null != questNum) { seriesFlagNode = creatPropertyNode(doc,"questNum",questNum) //创建请求次数属性节点 valueNode.appendChild(seriesFlagNode); //为value节点添加property子节点 } if(null != beginRecord) { var beginDayNode = creatPropertyNode(doc,"beginRecord",beginRecord) //创建起始记录数属性节点 valueNode.appendChild(beginDayNode); //为value节点添加property子节点 } if(null != endRecord) { var beginTimeNode = creatPropertyNode(doc,"endRecord",endRecord) //创建终止记录数属性节点 valueNode.appendChild(beginTimeNode); //为value节点添加property子节点 } if(null != isSample) { var endDayNode = creatPropertyNode(doc,"isSample",isSample) //创建抽样属性节点 valueNode.appendChild(endDayNode); //为value节点添加property子节点 } if(null != dispachRecord) { var endTimeNode = creatPropertyNode(doc,"dispatchRecord",dispachRecord) //创建UI反填参数属性节点 valueNode.appendChild(endTimeNode); //为value节点添加property子节点 } paraNode.appendChild(valueNode); //为para节点添加自己点value return paraNode } /******************************************************************************* 函数名: initXmlDom 功能: 创建一个XmlDom对象 并建立所有命令所必须的根节点requestNode以及UIPAGENode: 返回结果为对象数组:[doc,requestNode] *******************************************************************************/ function initXmlDom(CMDCode) //1077249 { var doc = new XmlDom(); //创建xmlDoc var requestNode= creatRequestNode(doc,CMDCode); //创建request节点 var randomNumber = Math.floor(Math.random( )*10000)+10000; //创建随即整数 var UIPAGENode = creatSingleChildParaNode(doc,"UIPAGE",randomNumber); //创建para节点 requestNode.appendChild(UIPAGENode); //为根节点添加para子节点 return [doc,requestNode]; //返回xmlDoc对象及request节点 } /** * 函数名称: initXmlDomWithoutUIPage * 函数功能: 创建一个XmlDom对象 并建立所有命令所必须的根节点requestNode,不包含UIPAGE * 参数: CMDCode 命令码 * 返回: [doc, requestNode] */ function initXmlDomWithoutUIPage(CMDCode) //参数为:1081345 { var doc = new XmlDom(); //创建xml对象 var requestNode= creatRequestNode(doc,CMDCode); //创建xml根节点 return [doc, requestNode]; //返回DOM对象和根节点 } /******************************************************************************* 函数名: creatGetMSCListCMD 功能: 构造MSC列表请求命令 *******************************************************************************/ function creatGetMSCListCMD(BusiId) { var oXmlDom = initXmlDom(g_cmdCode.RSM_CMD_GET_MEAS_DATA); var doc = oXmlDom[0]; var requestNode = oXmlDom[1]; //CHR应用为报表业务标识(枚举值) REPORT_NAMENode = creatSingleChildParaNode(doc,"REPORT_NAME",g_report.CHR_GET_MSC_LIST); requestNode.appendChild(REPORT_NAMENode); //BEGIN:added by z00110907 2008-3-26 AQ5D01246 MSC 增加按照名称排序的问题 g_field.RSM_CHR_MSC_NAME 为 "e_10002" 为MSC名称字段, 全局唯一 var oSortNode = creatOrderConditionNode(doc,g_field.RSM_CHR_MSC_NAME,"ASC"); requestNode.appendChild(oSortNode); //END:added by z00110907 2008-3-26 AQ5D01246 return requestNode; } /******************************************************************************* 函数名: creatGetLatSubListCMD 功能: 构造维度子列表请求命令 reportLatitude为g_report中的一个枚举值如CHR_GET_OFFICE_LIST *******************************************************************************/ function creatGetLatSubListCMD(MSC,reportLatitude) { var oXmlDom = initXmlDom(g_cmdCode.RSM_CMD_GET_MEAS_DATA); var doc = oXmlDom[0]; var requestNode = oXmlDom[1]; /* if(MSC) { NEIDNode = creatSingleChildParaNode(doc,"NEID",MSC); requestNode.appendChild(NEIDNode); } */ //CHR应用为报表业务标识(枚举值) REPORT_NAMENode = creatSingleChildParaNode(doc,"REPORT_NAME",reportLatitude); requestNode.appendChild(REPORT_NAMENode); var paraNode = creatParaNode(doc,"FILTER_CONDITION"); if(MSC) { if(typeof(MSC)=="string") { var valueNode = creatValueNode(doc, g_field.RSM_CHR_MSC_ID, g_filter.FILTER_EQUAL_TO, [MSC]); } else if(typeof(MSC)=="object") { var valueNode = creatValueNode(doc, g_field.RSM_CHR_MSC_ID, g_filter.FILTER_IN, MSC); } var conditionGroupNode = creatConditionGroupNode(doc); conditionGroupNode.appendChild(valueNode); paraNode.appendChild(conditionGroupNode); } requestNode.appendChild(paraNode); //BEGIN:added by z00110907 2008-3-26 AQ5D01246 增加排序字段 //增加按照局向、小区、中继群等名称的排序 var oSortNode = null; switch (reportLatitude) { case g_report.CHR_GET_OFFICE_LIST: // g_field.RSM_CHR_OFFICE_NAME 局向名称 "e_10004" 全局唯一 oSortNode = creatOrderConditionNode(doc,g_field.RSM_CHR_OFFICE_NAME,"ASC"); break; case g_report.CHR_GET_CELL_LIST: // g_field.RSM_CHR_CELL_NAME 小区名称 "e_10005" 全局唯一 oSortNode = creatOrderConditionNode(doc,g_field.RSM_CHR_CELL_NAME,"ASC"); break; case g_report.CHR_GET_TBL_LONG_TRUNK: // g_field.RSM_CHR_TRUNK_NAME 中继群名称 "e_10006" 全局唯一 oSortNode = creatOrderConditionNode(doc,g_field.RSM_CHR_TRUNK_NAME,"ASC"); break; case g_report.CHR_GET_TBL_LONG_OFFICE: // g_field.RSM_CHR_OFFICE_NAME 局向名称 "e_10004" 全局唯一 oSortNode = creatOrderConditionNode(doc,g_field.RSM_CHR_OFFICE_NAME,"ASC"); break; default: break; } if (oSortNode) { requestNode.appendChild(oSortNode); } //END:added by z00110907 2008-3-26 AQ5D01246 增加排序字段 return requestNode; } /******************************************************************************* 函数名: creatSaveCMD 功能: 构造保存文件命令 Return: XML片段(DOM)-成功 null-失败 *******************************************************************************/ function creatSaveCMD(questNum,fileType,tmpTblId,orderColId,orderType,beginRecord,endRecord,g_currentPage,outputlist) { if((null == questNum) || (null == fileType)) { return null; } //if fileType无效 var oXmlDom = creatInputObjectNode(g_cmdCode.RSM_CMD_SAVE_MEAS_DATA); var doc = oXmlDom[0]; var requestNode = oXmlDom[1]; var FORMATNode = creatSingleChildParaNode(doc,"FORMAT",fileType.toString(10)) requestNode.appendChild(FORMATNode); var sessionId = parseCookie(); var SESSIONIDNode = creatSingleChildParaNode(doc,"SESSIONID",sessionId) requestNode.appendChild(SESSIONIDNode); var tmpTblIdNode = creatSingleChildParaNode(doc,"TEMP_TBL",tmpTblId) requestNode.appendChild(tmpTblIdNode); var OUTPUTLISTNode = creatMulitChildParaNode(doc,"SELECT_COLUMNS",outputlist); requestNode.appendChild(OUTPUTLISTNode); var orderConditionNode = creatOrderConditionNode(doc,orderColId,orderType) requestNode.appendChild(orderConditionNode); //var recordNode = creatRecordNode(doc,questNum,1,40000,0,1) var recordNode = creatRecordNode(doc,questNum,beginRecord,endRecord,0,g_currentPage) requestNode.appendChild(recordNode); return requestNode; } /******************************************************************************* 函数名: creatNewPageCMD 功能: 构造获取新页请求命令 oRecordThreshold 包含questNum,beginRecord,endRecord,isSample,dispachRecord属性 Return: XML片段(DOM)-成功 null-失败 *******************************************************************************/ function creatNewPageCMD(oRecordThreshold,tmpTblId,orderColId,orderType,outPutList) { if(null == oRecordThreshold) { return null; } var oXmlDom = creatInputObjectNode(g_cmdCode.RSM_CMD_GET_MEAS_DATA); var doc = oXmlDom[0]; var requestNode = oXmlDom[1]; var sessionId = parseCookie(); var SESSIONIDNode = creatSingleChildParaNode(doc,"SESSIONID",sessionId) requestNode.appendChild(SESSIONIDNode); var tmpTblIdNode = creatSingleChildParaNode(doc,"TEMP_TBL",tmpTblId) requestNode.appendChild(tmpTblIdNode); //处理auto_index问题,屏蔽掉Clearcode输出项的下发 var outPutListToServer = []; for(var i in outPutList) { if(g_ClearCodeID != outPutList[i]) { outPutListToServer.push(outPutList[i]); } } var OUTPUTLISTNode = creatMulitChildParaNode(doc,"SELECT_COLUMNS",outPutListToServer); requestNode.appendChild(OUTPUTLISTNode); /* var OUTPUTLISTNode = creatMulitChildParaNode(doc,"SELECT_COLUMNS",outPutList); requestNode.appendChild(OUTPUTLISTNode); */ if(orderColId) { var orderConditionNode = creatOrderConditionNode(doc,orderColId,orderType) requestNode.appendChild(orderConditionNode); } var recordNode = creatRecordNode(doc, oRecordThreshold.questNum, oRecordThreshold.beginRecord, oRecordThreshold.endRecord, oRecordThreshold.isSample, oRecordThreshold.dispachRecord); requestNode.appendChild(recordNode); return requestNode; } /******************************************************************************* 函数名: creatGetGraphCMD 功能: 构造获取图形数据请求命令 目前直接调用creatNewPageCMD graphType作为参数传入供后续扩展 Return: XML片段(DOM)-成功 null-失败 *******************************************************************************/ function creatGetGraphCMD(graphType,oRecordThreshold,tmpTblId,orderColId,orderType,outPutList) { if("-1" == graphType) { return null; } return creatNewPageCMD(oRecordThreshold,tmpTblId,orderColId,orderType,outPutList); } /******************************************************************************* 函数名: creatDelTblCMD 功能: 构造获取新页请求命令 Return: XML片段(DOM)-成功 null-失败 *******************************************************************************/ function creatDelTblCMD(tmpTblId) { if("-1" == tmpTblId) { return null; } var oXmlDom = initXmlDom(g_cmdCode.RSM_CMD_DEL_RPT_TMP_TBL); var doc = oXmlDom[0]; var requestNode = oXmlDom[1]; var sessionId = parseCookie(); var SESSIONIDNode = creatSingleChildParaNode(doc,"SESSIONID",sessionId) requestNode.appendChild(SESSIONIDNode); var tmpTblIdNode = creatSingleChildParaNode(doc,"TEMP_TBL",tmpTblId) requestNode.appendChild(tmpTblIdNode); return requestNode; }