zoukankan      html  css  js  c++  java
  • 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');
    }
  • 相关阅读:
    笔记
    BlangenOA项目展示(附源码)
    笔记截至20190406
    ASP.NET MVC 使用过滤器需要注意
    单例模式和HttpContext线程内唯一
    C#线程/进程同步(lock、Mutex、Semaphore)
    Web标准
    JavaScript 放置在文档最后面可以使页面加载速度更快
    GUI 面板实现 (解决了关闭事件)
    GUI 实现多个窗口 (使用封装特性)
  • 原文地址:https://www.cnblogs.com/janmson/p/359613.html
Copyright © 2011-2022 走看看