XML的一些函數

//XML操作函数
/*****************************************************************************************
Object CreateXMLParser(void)
创建尽可能高版本的XMLDOM解析器
*****************************************************************************************/
function CreateXMLParser()
{
try{
return new ActiveXObject('MSXML2.DOMDocument.4.0');
}catch(e){
try{
return new ActiveXObject('MSXML2.DOMDocument.3.0');
}catch(e){
try{
return new ActiveXObject('MSXML2.DOMDocument.2.6');
}catch(e){
try{
return new ActiveXObject('MSXML2.DOMDocument');
}catch(e){
try{
return new ActiveXObject('Microsoft.XMLDOM');
}catch(e){
return null;
}
}
}
}
}
}
/*****************************************************************************************
Object CreateHTTPPoster(void)
创建尽可能高版本的XMLHTTP对象
*****************************************************************************************/
function CreateHTTPPoster(){
try{
return new ActiveXObject('MSXML2.XMLHTTP.4.0');
}catch(e){
try{
return new ActiveXObject('MSXML2.XMLHTTP.3.0');
}catch(e){
try{
return new ActiveXObject('MSXML2.XMLHTTP.2.6');
}catch(e){
try{
return new ActiveXObject('MSXML2.XMLHTTP');
}catch(e){
try{
return new ActiveXObject('Microsoft.XMLHTTP');
}catch(e){
return null;
}
}
}
}
}
}
/*****************************************************************************************
IDOMDocument GetXMLWithSession(sUrl,sMethod,vDat)
获取一个带Session的XML文档
+参数列表
sUrl目标URL
sMethod获取方式,POST or GET
vData发送的数据
*只能用同步方式获取
*****************************************************************************************/
function GetXMLWithSession(sUrl,sMethod,vData)
{
var r=/(ASPSESSION.*)\=([^\;\&]*)/ig;
r.exec(document.cookie);
var xmlHttp=CreateHTTPPoster();
xmlHttp.open(sMethod,sUrl,false);
xmlHttp.setRequestHeader("Cache-Control", "no-cache");
xmlHttp.setRequestHeader("Connection", "Keep-Alive");
xmlHttp.setRequestHeader("Accept", "*/*");
xmlHttp.setRequestHeader("Accept-Language", "zh-cn");
xmlHttp.setRequestHeader("Referer", window.top.location.href);
xmlHttp.setRequestHeader("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3215; .NET CLR 1.0.3705)");
xmlHttp.setRequestHeader(RegExp.$1,RegExp.$2);
xmlHttp.send(URLEncoding(vData));
if(xmlHttp.status!=200){
if(xmlHttp.status==404){
alert('错误:请求的应用程序不存在');
xmlHttp=null;
return null;
}
if(xmlHttp.status==500){
alert('错误:请求的应用程序发生内部错误');
xmlHttp=null;
return null;
}
alert('发生未知错误,错误类型为 '+xmlHttp.status.toString());
xmlHttp=null;
return null;
}else{
var xmlDom=xmlHttp.responseXML;
xmlHttp=null;
if(xmlDom.parseError.errorCode!=0){
alert(xmlDom.parseError.reason);
xmlDom=null;
return null;
}else{
return xmlDom.documentElement;
}
}
}
/*****************************************************************************************
ClearDropDownList(目标Object,是否保留第一个)
*****************************************************************************************/
function ClearDropDownList(oSel,bolLeaveFirst)
{
if(oSel==null || oSel.tagName.toLowerCase()!='select'){
alert('SELECT控件不存在!\n'+oSel.tagName);
return;}
var iLength=oSel.options.length;
if(bolLeaveFirst)
iTmp=1;
else
iTmp=0;
for(iCnt=iLength-1;iCnt>=iTmp;iCnt--)
oSel.options.remove(iCnt);
oSel=null;
}
/*****************************************************************************************
IDOMDocument XMLStringToNodeList(String)
将XML字符串转换成NodeList
*****************************************************************************************/
function XMLStringToNodeList(strXml){
var oXml=CreateXMLParser();
oXml.async=false;
try{
oXml.loadXML(strXml);
}catch(e){
oXml=null;
return null;
}
var nlTemp=oXml.documentElement;
oXml=null;
return nlTemp;
}
/*****************************************************************************************
NODES GetXMLNodeList(XML文件路径,XPATH选择器)
如:
GetXMLNodeList("/test.xml","//COUNTRY[@CODE='1236']'");
*****************************************************************************************/
function GetXMLNodeList(strXMLFile,strXPathFilter){
var oDom=CreateXMLParser();
    oDom.async=false;
oDom.load(strXMLFile);
    if(oDom.parseError.errorCode!=0){
        alert('装载XML文档 '+strXMLFile+' 出错了!');
oDom=null;
return null;
    }else{
        var nodesTemp=oDom.documentElement.selectNodes(strXPathFilter);
oDom=null;
if(nodesTemp.length<1) {
//alert('错误的XMPATH选择器\n'+strXPathFilter);
return null;
}
return nodesTemp;
    }
}
/*****************************************************************************************
Integer MessageBox (strMessage,strTitle,intIcon,intButtons,intDefaultButton)
显示VBSctipt样式对话框
*****************************************************************************************/
function MessageBox(strMessage,strTitle,intIcon,intButtons,intDefaultButton)
{
strMessage=strMessage.replace(/\"/g,'""').replace(/\n/g,'" & vbCrLf & "');
strTitle=strTitle.replace(/\"/g,'""').replace(/\n/g,'" & vbCrLf & "');
window.Temp=0;
try{
execScript('Window.Temp=MsgBox("'+strMessage+'",'+(intIcon+intButtons+intDefaultButton).toString()+',"'+strTitle+'")','VBScript');
return window.Temp;
}catch(e){
alert(e.description);
return null;
}
}
/*****************************************************************************************
void AttachVBFunctionsToWindow (void)
绑定VB常用函数到JScript
在页面中执行此函数以后就可以直接使用URLEcoding/URLDecoding/Bytes2BSTR/VBTypeName/VBVarType等函数
VBTypeName和VBVarType可以更细致地区分各种变量类型
*****************************************************************************************/
function AttachVBFunctionsToWindow()
{
var s=
'Public Function URLEncoding(v)\n'+
'Dim s,t,i,j,h,l,x : s = "" : x=Len(v)\n'+
'For i = 1 To x\n'+
't = Mid(v,i,1) : j = Asc(t)\n'+
'If j> 0 Then\n'+
's = s & t\n'+
'Else\n'+
'If j < 0 Then j = j + &H10000\n'+
'h = (j And &HFF00) \\ &HFF\n'+
'l = j And &HFF\n'+
's = s & "%" & Hex(h) & "%" & Hex(l)\n'+
'End If\n'+
'Next\n'+
'URLEncoding = s\n'+
'End Function\n\n'+
'Public Function URLDecoding(sIn)\n'+
'Dim s,i,l,c,t,n : s="" : l=Len(sIn)\n'+
'For i=1 To l\n'+
'c=Mid(sIn,i,1)\n'+
'If c<>"%" Then\n'+
's = s & c\n'+
'Else\n'+
'c=Mid(sIn,i+1,2) : i=i+2 : t=CInt("&H" & c)\n'+
'If t<&H80 Then\n'+
's=s & Chr(t)\n'+
'Else\n'+
'c=Mid(sIn,i+1,3)\n'+
'If Left(c,1)<>"%" Then\n'+
'URLDecoding=s\n'+
'Exit Function\n'+
'Else\n'+
'c=Right(c,2) : n=CInt("&H" & c)\n'+
't=t*256+n-65536\n'+
's = s & Chr(t) : i=i+3\n'+
'End If\n'+
'End If\n'+
'End If\n'+
'Next\n'+
'URLDecoding=s\n'+
'End Function\n'+
'Public Function Bytes2BSTR(v)\n'+
'Dim r,i,t,n : r = ""\n'+
'For i = 1 To LenB(v)\n'+
't = AscB(MidB(v,i,1))\n'+
'If t < &H80 Then\n'+
'r = r & Chr(t)\n'+
'Else\n'+
'n = AscB(MidB(v,i+1,1))\n'+
'r = r & Chr(CLng(t) * &H100 + CInt(n))\n'+
'i = i + 1\n'+
'End If\n'+
'Next\n'+
'Bytes2BSTR = r\n'+
'End Function\n'+
'Public Function VBTypeName(chrIn) : VBTypeName=TypeName(chrIn) : End Function\n'+
'Public Function VBVarType(chrIn) : VBVarType=VarType(chrIn) : End Function\n';
execScript(s,'VBScript');
}
原文地址:https://www.cnblogs.com/janmson/p/359613.html