`

隐式ajax框架远程调用xml文件(存在跨域问题)

阅读更多
我顶 字号:

Array.prototype.isUsed = false;//数组已经是否用过标志
var xmlArray = new Array();

//根据浏览嚣创建DOM对象
function init()
{
  var Browser = new Object();
  Browser.isMozilla = (typeof document.implementation != 'undefined') && (typeof document.implementation.createDocument != 'undefined') && (typeof HTMLDocument!='undefined');
  Browser.isIE = window.ActiveXObject?true:false;
  Browser.isFirefox = (navigator.userAgent.toLowerCase().indexOf("firefox")!=-1);
  Browser.isOpera = (navigator.userAgent.toLowerCase().indexOf("opera")!=-1); 
  if(Browser.isIE)
  return new LocalXML();
  else firefoxloadxml();
}

//IE浏览器的处理---加载得到XML文件
function LocalXML()

  var XMLDoc= new ActiveXObject("Microsoft.XMLDOM");
  //加载XML文件
  this.loadXML = function(xmlfilename)
  {    
    alert(xmlfilename);
    XMLDoc.onreadystatechange=eval(this.onchange);
 XMLDoc.async=false;
 try{
    XMLDoc.load(xmlfilename);
    }
    catch(e)
    {
    alert(e)
    }
  }
  //返回指定节点的值
  this.getNode=function(sXpath){
    var iReval="";
    var ivalue=XMLDoc.selectSingleNode(sXpath);
    if(ivalue)  iReval=ivalue.text;
    return iReval;
  }
  //返回指定的节点集
  this.selectNodes=function(sXpath){
    return XMLDoc.selectNodes(sXpath);
  }
  //返回加载XML文件的状态
  this.readyState=function ()
  {
    return XMLDoc.readyState;
  } 

  //当文件更改时,响应的方法
  this.onchange=function()
  {
    if(XMLDoc.readyState==4)
    {   
     xmlParse();
    }   
  }
  //是否同步
  this.async=function (bType)
  {
   return XMLDoc.async=bType;
   } 

}

//删除左右两端的空格
function trim(str){
  return str.replace(/(^\s*)|(\s*$)/g, "");
}


//解析xml文件
function xmlParse()

    
 if(xmlArray.isUsed) xmlArray = new Array();
 var element = xmlObj.selectNodes("/root/content/item");  
 for(var i=0; i<element.length; i++)
  {
    
  var obj = new Object(); 
  obj.id=element[i].getAttribute("id");  
  for(var j=0; j<element[i].childNodes.length; j++)
  {   
    var nodeName =  element[i].childNodes[j].nodeName;
    if(nodeName == "name") obj.name = trim(element[i].childNodes[j].text);
    if(nodeName == "microimage") obj.microimage = trim(element[i].childNodes[j].text);
    if(nodeName == "url") obj.url = trim(element[i].childNodes[j].text);
    if(nodeName == "browse") obj.browse = trim(element[i].childNodes[j].text);   
    if(nodeName == "promulgator") obj.promulgator = trim(element[i].childNodes[j].text);
    if(nodeName == "discription") obj.discription = trim(element[i].childNodes[j].text); 
    if(nodeName == "time") obj.time = trim(element[i].childNodes[j].text);
    if(nodeName == "data") obj.data = trim(element[i].childNodes[j].text);
  }
  xmlArray.push(obj);
 } 
 xmlArray.isUsed = true;  
 setPlayMessageInfo();
}

 

//firefox浏览器的处理---加载得到XML文件
function firefoxloadxml(){
 var firefoxxmlDoc = document.implementation.createDocument("", "doc", null);
 firefoxxmlDoc.load(path);
    firefoxxmlDoc.onload = function () {
      if(xmlArray.isUsed) xmlArray = new Array();
      var item_length = firefoxxmlDoc.getElementsByTagName("item").length;
   var obj_item=firefoxxmlDoc.getElementsByTagName("item");
   for(var t=0;t<item_length;t++)
   {
     obj.id=element[i].getAttribute("id"); 
    var obj = new Object();
    obj.title = obj_item[t].getElementsByTagName("title")[0].firstChild.nodeValue;
    obj.url = obj_item[t].getElementsByTagName("vod_url")[0].firstChild.nodeValue;
    obj.url = obj_item[t].getElementsByTagName("begintime")[0].firstChild.nodeValue;
    obj.url = obj_item[t].getElementsByTagName("endtime")[0].firstChild.nodeValue;
    xmlArray.push(obj);
   }
   xmlArray.isUsed = true;
    }
}

分享到:
评论

相关推荐

    KWIC 隐式调用风格 实现

    标题中的“KWIC隐式调用风格实现”指的是在软件设计中采用的一种特定的编程模式。KWIC(Keyword-In-Context)通常用于文本处理,它将一个关键词在文本中的出现情况展示出来,使得关键词周围的上下文清晰可见。在这个...

    隐式调用dll和显式调用dll

    本文将深入探讨两种调用DLL中函数的方法:隐式调用和显式调用,并通过一个名为`TestCallDll`的示例项目进行解释。 **隐式调用DLL** 隐式调用是通过链接器在编译时完成的。当编译器处理源代码时,如果遇到对DLL中...

    DLL动态链接库生成和使用(隐式调用、显示调用)

    Windows10 64位系统,VS2013 编程平台...工程二为调用DLL的方法,分为隐式调用和显式调用。两个工程都是控制台应用程序consoleapplication。 对应的文章为 https://blog.csdn.net/u012210613/article/details/88904841

    隐式调用DLL库实例

    隐式调用与显式调用的区别在于,隐式调用时,编译器会在编译阶段将DLL中的函数接口信息整合到可执行文件中,因此程序启动时会自动加载DLL。而显式调用则需要在运行时通过LoadLibrary和GetProcAddress等API手动加载和...

    dll隐式调用的例子

    另一方面,`隐式调用DLL`这个文件可能包含了示例代码或更具体的隐式调用步骤。通过研究这个文件,你可以更直观地了解如何在实际项目中应用隐式调用DLL的方法。 总之,理解和掌握DLL的隐式调用对于Windows下的软件...

    隐式的调用动态链接库

    隐式链接是在编译和链接阶段,编译器会将DLL中的函数名和地址映射到可执行文件中,这样在程序运行时,操作系统可以直接找到并调用这些函数。这种链接方式对于那些希望在运行时自动加载所有依赖的DLL的开发者来说非常...

    delphi DLL显示隐式调用

    首先,我们要理解什么是DLL的"显示调用"和"隐式调用"。在Delphi中,当你在程序中明确声明并引用DLL中的函数或过程时,这就是"显示调用"。这通常通过`GetProcAddress`函数实现,它需要知道DLL的路径以及要调用的函数...

    VLD2.5.1隐式调用文件及项目

    在这个版本中,VLD隐式调用文件和项目的设计是为了在开发过程中提供无缝集成,使得调试和测试过程更为高效。 1. **VLD的核心功能**: - 内存泄漏检测:VLD通过跟踪分配和释放的内存块,找出没有被正确释放的内存,...

    VC 6.0下的Dll(显示调用和隐式调用)

    1. 隐式调用(Implicit Linking):在编译期间,通过在项目设置中添加引用到DLL的库文件(.lib),使得编译后的可执行文件与DLL之间建立链接。当程序运行时,系统自动加载所需的DLL。这种调用方式简单直观,但可能...

    动态链接库的隐式调用

    总之,动态链接库的隐式调用是Windows程序设计中一种常见的技术,它简化了代码的使用和共享,但也带来了一些挑战,如版本管理和依赖性问题。理解和掌握这一技术对于进行高效、稳定的Windows应用开发至关重要。

    DLL动态链接库实例,在MFC中隐式加载dll程序源码

    隐式加载是在编译时通过链接器将DLL函数的调用链接到可执行文件中,而显式加载则是在运行时通过LoadLibrary和GetProcAddress等API手动加载和查找函数。 2. MFC与DLL MFC是微软提供的C++类库,用于简化Windows API...

    C++ 多个类的DLL封装以及隐式链接和显式链接2种方法调用

    然而,也存在一些问题,如版本冲突、DLL地狱(不同版本的DLL导致的问题)和调试困难。因此,在设计和使用DLL时,要确保遵循良好的命名和版本控制规则。 5. **使用buildopencldll** "buildopencldll"可能是一个构建...

    响应createobject隐式调用dll事件.rar

    用这种方法来隐式调用dll,近准备弄个项目,程序需从N个DLL中调用一个或几个,在DLL处理完数据后要通知主程序。程序功能很简单,但因为N不确定性,并且可能随时可能增加,所以只能用CreateObject隐式调用DLL,在网上...

    显式和隐式、过滤器intent的使用

    显式Intent通过指定目标组件进行直接调用,而隐式Intent则依赖于Intent Filter的匹配来寻找合适的响应者。熟练掌握这两种Intent以及Intent Filter的使用,对于开发高效且可扩展的Android应用至关重要。通过学习和...

    基于多用户多级目录文件管理系统,使用索引节点构建多级目录,隐式链接(FAT)实现文件物理结构

    【作品名称】:这是一个多用户多级目录文件管理系统,使用索引节点构建多级目录,隐式链接(FAT)实现文件物理结构,位示图实现磁盘空闲空间管理,以模拟操作系统中文件的物理结构和文件目录。 【适用人群】:适用...

    动态链接库隐式调用

    在这个场景中,我们将讨论如何在MFC项目中进行DLL的隐式调用。 隐式链接是DLL调用的一种方式,与显式链接相对。在隐式链接中,编译器会将DLL的函数声明和导出函数的实际地址在编译时就绑定在一起,这样程序在运行时...

    动态链接库的隐式调用练习

    隐式链接是在编译时将DLL函数的地址解析到调用程序的可执行文件中,而显式链接则是在运行时通过API函数LoadLibrary和GetProcAddress动态获取函数地址。 2. **VC6.0编译器的使用** - VC6.0是Microsoft Visual C++的...

    FTP下载-支持SSL&TSL;隐式调用

    总之,FTP与SSL/TLS的隐式调用提供了安全的文件传输方式,防止了数据在传输过程中被窃取或篡改。理解并正确实现这个过程对于开发安全的FTP应用程序至关重要。提供的压缩包资源应该能够帮助开发者快速掌握这一技术,...

    Delphi XE7 隐式调用案例

    Delphi XE7 隐式调用案例,欢迎各位下载调试- -

    代码自动生成 mybatis+mysql8.0 实体映射xml类生成工具

    `build.xml`是Ant的工作配置文件,通过调用MyBatis Generator的相关任务,执行代码生成流程。开发者只需要运行Ant命令,即可自动完成指定表的实体类、Mapper接口及XML映射文件的生成。 关于标签: - **mybatis**:...

Global site tag (gtag.js) - Google Analytics