js获取xml数据,兼容各大浏览器

简介:
 

js获取xml数据,兼容各大浏览器

 

function getXMLNode( str_xmlUrl, str_dirPath )
{  
        if( !str_xmlUrl || !str_dirPath )
                return false;
        var _bool_IE = ( window.ActiveXObject ? true : false );
        var _obj_xmlDoc;
        if( _bool_IE )
                _obj_xmlDoc = new ActiveXObject( 'Microsoft.XMLDOM' );
        else
                _obj_xmlDoc = document.implementation.createDocument("","",null);
                
        _obj_xmlDoc.async = false;
        try
        { 
                _obj_xmlDoc.load( str_xmlUrl );  //ie 下 js获取xml
        }// try
        catch ( E )
        {
                return false;
        }// catch
        /* Mozila Firefox */
        if( !_bool_IE )
        {
                var _arr_dirPath = str_dirPath.split( '/' );
                if( !_arr_dirPath[0] )
                        _arr_dirPath.shift();
                if( !_arr_dirPath )
                        return false;
                        
                var _obj_aimElement = _obj_xmlDoc;

                var _obj_reg = /\[([0-9]+)\]/ig;

                for( var _int_i = 0; _int_i < _arr_dirPath.length; _int_i ++ )
                {
                        var _int_localIndex = 0;
                        var _int_aimIndex = 0;
                        var _str_dirPath = _arr_dirPath[_int_i];
                        var _arr_result = _obj_reg.exec( _str_dirPath );
                        var bool_catch = false;
                        if( _arr_result )
                        {
                                _int_aimIndex = _arr_result[1];
                                _str_dirPath = _str_dirPath.replace( _arr_result[0], '' );
                        }// if
                        
                        var _arr_childNodes = _obj_aimElement.childNodes;
                        for( var _int_j = 0; _int_j < _arr_childNodes.length; _int_j ++ )
                        {
                                if( _arr_childNodes[_int_j].nodeName == _str_dirPath )
                                {
                                        if( _int_localIndex == _int_aimIndex )
                                        {
                                                _obj_aimElement = _arr_childNodes[_int_j];
                                                bool_catch = true;
                                                break;
                                        }// if
                                        else
                                                _int_localIndex += 1;
                                }// if
                        }// for
                        if( !bool_catch )
                        {
                                return false;
                        }
                }// for
                return( _obj_aimElement.childNodes[0].nodeValue );  //firefox下 js获取xml

        }// if
        
        /* Microsoft IE */
        try
        {
                return _obj_xmlDoc.selectNodes( str_dirPath )[0].text;
        }
        catch( e )
        {
                return false;
        }
        return false;
}
    
    alert(getXMLNode("http://www.baidu.com/?xml","data/pageId"));






      本文转自yjflinchong 51CTO博客,原文链接:http://blog.51cto.com/yjflinchong/1165111,如需转载请自行联系原作者


相关文章
|
8月前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
409 0
|
Web App开发 数据采集 JavaScript
动态网页爬取:Python如何获取JS加载的数据?
动态网页爬取:Python如何获取JS加载的数据?
1810 58
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
889 156
|
JavaScript 前端开发 数据处理
模板字符串和普通字符串在浏览器和 Node.js 中的性能表现是否一致?
综上所述,模板字符串和普通字符串在浏览器和 Node.js 中的性能表现既有相似之处,也有不同之处。在实际应用中,需要根据具体的场景和性能需求来选择使用哪种字符串处理方式,以达到最佳的性能和开发效率。
436 63
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JSON 移动开发 JavaScript
在浏览器执行js脚本的两种方式
【10月更文挑战第20天】本文介绍了在浏览器中执行HTTP请求的两种方式:`fetch`和`XMLHttpRequest`。`fetch`支持GET和POST请求,返回Promise对象,可以方便地处理异步操作。`XMLHttpRequest`则通过回调函数处理请求结果,适用于需要兼容旧浏览器的场景。文中还提供了具体的代码示例。
335 5
在浏览器执行js脚本的两种方式
|
监控 JavaScript 算法
深度剖析 Vue.js 响应式原理:从数据劫持到视图更新的全流程详解
本文深入解析Vue.js的响应式机制,从数据劫持到视图更新的全过程,详细讲解了其实现原理和运作流程。
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
2218 1
|
XML JavaScript 数据格式
XML DOM 浏览器差异
XML DOM 浏览器差异
|
数据采集 存储 JavaScript
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南
本文介绍了如何使用Puppeteer和Node.js爬取大学招生数据,并通过代理IP提升爬取的稳定性和效率。Puppeteer作为一个强大的Node.js库,能够模拟真实浏览器访问,支持JavaScript渲染,适合复杂的爬取任务。文章详细讲解了安装Puppeteer、配置代理IP、实现爬虫代码的步骤,并提供了代码示例。此外,还给出了注意事项和优化建议,帮助读者高效地抓取和分析招生数据。
629 0
如何使用Puppeteer和Node.js爬取大学招生数据:入门指南