兼容Firefox火狐浏览器的JS读取远程XML某节点的值

最初的想法是用于注册,判断要注册的用户名是否重复。

参数:
str_xmlUrl:远程XML的地址;如http://192.168.1.19/test/xml.xml
str_dirPath:要寻找的节点的路径,如XMLDocument/test[0]/newName2/childs[2]

JS代码:

以下是引用片段:
<script type="text/javascript">
function getXMLNode( str_xmlUrl, str_dirPath )

    if( !str_xmlUrl || !str_dirPath )
        return false;
    
    var _bool_IE = ( window.ActiveXObject ? true : false );//获取浏览器类型
    
    //初始化XMLDocument对象
    var _obj_xmlDoc;
    if( _bool_IE )
        _obj_xmlDoc = new ActiveXObject( ’Microsoft.XMLDOM’ );
    else
        _obj_xmlDoc = document.implementation.createDocument("","",null);
        
    /*设置异步处理
        本函数不需要在XML文件读取完成之前进行任何操作,
        因此关闭异步处理功能。
    */
    _obj_xmlDoc.async = false;
    //读取XML文件内容
    try
    {
        _obj_xmlDoc.load( str_xmlUrl );
    }//try
    catch ( E )
    {
        //读取失败
        return false;
    }//catch
    /*根据路径解析XML文件内容*/
    /*Mozila Firefox*/
    if( !_bool_IE )
    {
        /*
        解析DOM路径并验证
        要求该路径使用"/"作为分隔符
        路径内可使用"[n]"的方式指定子节点的索引
        如"XMLDocument/item[1]"表示根节点下的第一个XMLDocument节点下的第二个item节点
        如果不使用这种方式默认为第一个节点
        */
        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;
        /*根据DOM路径解析获取节点*/
        for( var _int_i = 0; _int_i < _arr_dirPath.length; _int_i ++ )
        {
            //当前符合条件的节点索引
            var _int_localIndex = 0;
            //DOM路径中指定的节点索引
            var _int_aimIndex = 0;
            //获取当前要解析的节点的相对路径
            var _str_dirPath = _arr_dirPath[_int_i];
            //获取当前要解析的节点的索引
            var _arr_result = _obj_reg.exec( _str_dirPath );
            //搜索标识,如果该标识为false则说明未获得指定的节点
            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 )
                {
                    //如果索引与路径匹配则取得该节点
                    //否则将当前符合条件的节点索引加"1"
                    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 );
    }//if
    
    /*Microsoft IE*/
    try
    {
        //返回搜索到的节点内容
        return _obj_xmlDoc.selectNodes( str_dirPath )[0].text;
    }
    catch( e )
    {
        return false;
    }
    return false;
}//function getXMLNode()
alert( getXMLNode( ’http://192.168.1.19/test/xml.xml’, ’XMLDocument/test[0]/newName2/childs[2]’ ) );
</script>

XML代码:

以下是引用片段:
<?xml version="1.0" encoding="utf-8" ?> 
<XMLDocument>
<test>
<newName>
<name>name</name> 
<childs>test000</childs> 
<childs>test998</childs> 
<childs>test997</childs> 
<childs>
<childs>test889</childs> 
<childs>test888</childs> 
</childs>
</newName>
<newName2>
<childs>test996</childs> 
<childs>test995</childs> 
<childs>test994</childs> 
</newName2>
</test>
<newName3>
<childs>test993</childs> 
<childs>test992</childs> 
<childs>test991</childs> 
</newName3>
<STR_WEB_HOST>http://localhost:8080/WebTemp/</STR_WEB_HOST> 
<STR_SYS_CHARSET>utf-8</STR_SYS_CHARSET> 
</XMLDocument>
时间: 2024-10-28 08:07:13

兼容Firefox火狐浏览器的JS读取远程XML某节点的值的相关文章

Ajax请求过程中下载文件在FireFox(火狐)浏览器下的兼容问题_AJAX相关

需求很简单,点击一个文件链接下载该文件,同时向后台发送请求.需求很常见,用户点击下载后通常要进行下载量的统计,统计的话可以利用 script标签 或者 img标签(图片ping) 的跨域能力,将它们的 src 属性指向统计地址,但是这次用了 ajax 进行统计,遂出现了这个问题. demo 代码如下: <a id="a" href="http://c758482.r82.cf2.rackcdn.com/Sublime Text 2.0.2 x64 Setup.exe&q

解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法_javascript技巧

今天检查自己用JQuery+AJAX+PHP做的网站后台登录检测,发现登陆成功后执行页面跳转函数这段JavaScript(JS)代码特效在IE和谷歌浏览器Chrome下都可以很好地执行,兼容性还不错.结果到了火狐(FireFox)浏览器下setTimeout这个JS内置函数不执行了,无效了,也没报错!打开FireBUG指望它能检测出JS的错误,结果没用...Javascript(JS)脚本代码在各浏览器下的兼容是一个很头疼的问题,经过一番调试和搜索,终于解决了setTimeout这个JS代码在火

firefox火狐浏览器与ie浏览器在html代码编写时的差异

本文讲解了firefox火狐浏览器与ie浏览器在html代码编写时的差异,程序员有进行开发调试时,可按下面说到的HTML标签进行调试. 1.ul不同,ie下默认是margin留白,FF下默认是padding留白,所以要先用margin:0;padding:0;来实现兼容.2.给定高度后,当内容过多,真实高度大于给定高度时,两者不同还有呢? 在ff测试div+css的过程中发现不少问题,主要原因是代码的不规范书写. 1.居中问题div里的内容,ie默认为居中,而ff默认为左对齐.使ff内容居中的方

制作便携版 FireFox 火狐浏览器

Firefox是一款可高度自定义的开源浏览器: 你可以访问 火狐DIY 定制自己的Firefox安装包, 此外,你还可以自己动手定制一款可以放在U盘随身携带的便携版Firefox火狐浏览器. 制作便携版Firefox火狐浏览器需要有三个要素: 火狐安装文件夹下的所有文件 Profile文件夹下的配置文件 启动引导文件,自定义的快捷方式或者一个bat批处理脚本 制作步骤为: 一.创建便携版浏览器文件夹,比如E:Firefox_Portable 二.将完整版火狐运行文件文件拷贝到便携浏览器文件夹:

Firefox火狐浏览器8个常用键盘快捷键

一直以来,Firefox 火狐浏览器都有着强大的键盘快捷键支持,也受到了很多开发者的喜爱.下面就向大家选取八个方便且常用的快捷键,希望能在浏览网页时给大家带来方便和快捷的体验.   强制刷新 , 跳过缓存,重新载入当前页面(重新从服务器下载刷新) 快捷键:Ctrl + F5 或 Ctrl+Shift+R 功能:在需要刷新当前页面时,为了避免受到缓存的滞后影响,可以直接使用该快捷键,将重新载入和跳过缓存两个操作合并成一步完成. 新建标签页 快捷键:Ctrl + T 功能:直接打开一个新的标签页.

Firefox火狐浏览器已全面支持建行网银

中国建设银行网上银行正式支持Firefox火狐浏览器,用户可以在网站上下载中国建设银行E路护航网银安全组件,安装后即可在火狐浏览器中顺畅使用建行网银进行查询.转账.支付等多种操作. 下载地址:http://www.ccb.com/cn/jump/download.htm 建行成为四大银行中首家支持非IE内核浏览器的银行,借此机会,也呼吁能够有更多的银行以用户为出发点,尽快支持非IE内核浏览器,减少用户在使用网银时的不便. 为了给大家更清晰和直观的了解,在这里和大家以图文的方式分享一下在火狐下使用

firefox火狐浏览器使用技巧大全

Mozilla Firefox是一个自由的,开放源码的浏览器,适用于 Windows, Linux 和 MacOS X平台,它体积小速度快,还有其它一些高级特征. 1. 任意缩放文字大小 在IE浏览器中,我们只能对文字的大小进行五个级别的调节,但是在火狐浏览器Firefox中,我们可以任意地缩放文字的大小.操作的方法很简单,只要点击菜单"查看→文字大小",在子菜单中就可以看见放大.缩小和正常三个选项,点击相应的选项就可以了,而且还可以用快捷键来快速的设置. 2. 搜索收藏夹里面的网页

电脑中安装和移除Firefox火狐浏览器插件的方法

  1.打开Firefox火狐浏览器,选择工具--附加组件; 2.会跳转到"附加组件管理器"; 3.在上面的搜索框中输入要添加的插件名称,并搜索,在结果列表中找到自己需要的,点击右侧的安装; 4.安装好后,打开浏览器的工具菜单-扩展中会显示安装的插件,点击就可以使用; 5.如果不想使用该插件可以点击"移除"按钮,即可移除插件.

win8系统在Firefox火狐浏览器安装markdown here插件的方法

  win8系统在Firefox火狐浏览器安装markdown here插件的方法 具体方法如下: 1.在右上角菜单选择附加组件按钮; 2.在搜索框输入插件名并回车; 3.点击"更多"可以看到插件的信息,如果你知道是哪个插件就不用点了;