1:读取服务器端xml(注意不同浏览器版本的区别),使用XML可以增强系统的扩展性,只用修改XML就可以实现增加减少功能的目的。

function loadXMLDoc1(dname){
    if (window.XMLHttpRequest){
        xhttp=new XMLHttpRequest();
    }else{
        xhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhttp.open("GET",dname,false);
    xhttp.send("");
    return xhttp.responseXML;
}

 

2:遍历XML节点

2.1:getElementsByTagName() 方法可以在取得一个节点后继续调用获得子节点,并且返回的是一个数组(只有一个节点时也要加上[0])

2.2:.childNodes[0].nodeValue) 取得一个节点的值的办法,节点的值也是节点(文本节点)

function test()
{
    var xml=loadXMLDoc1("book.xml");
    var bookss=xml.getElementsByTagName("book");
    for(var i=0;i<bookss.length;i++)
{
        document.write(bookss[i].getElementsByTagName("title")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(bookss[i].getElementsByTagName("author")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(bookss[i].getElementsByTagName("year")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(bookss[i].getElementsByTagName("price")[0].childNodes[0].nodeValue);
        document.write("</br>");
    }
}

 

3:CDATA节点值读取

3.1:如果一个XML节点中是CDATA,读取时不同浏览器的方法不同,在IE下nodeValue可以正常获取到值,在FF和chrome下通过wholeText读取。

3.2:如果一个节点浏览器不支持,可以使用if进行判断。

function testCDATA()
{
    var xml=loadXMLDoc1("ceshi.xml");
    var HightChartsOpinions=xml.getElementsByTagName("HightChartsOpinions");
    for(var i=0;i<HightChartsOpinions.length;i++)
{
        var wholeTextData=HightChartsOpinions[i].childNodes[0].wholeText;
        var text=wholeTextData?wholeTextData:HightChartsOpinions[i].childNodes[0].nodeValue
        document.write(text);
        document.write("</br>");
    }
    return false;
}

 

4: 通过XPATH进行XML的遍历

4.1:XPATH可以非常强大的进行XML节点的过滤,以下的链接中包含了常用的xpath用法。

http://www.w3school.com.cn/xpath/xpath_examples.asp

4.2:xpath读取xml 不同浏览器也有不同的方法实现,这里使用回调函数处理返回节点。

function xpath()
{
    var xmlFilePath="book.xml";
    var xpath="/bookstore/book[price>45]";
    var callback=function(element)
{
        document.write(element.getElementsByTagName("title")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(element.getElementsByTagName("author")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(element.getElementsByTagName("year")[0].childNodes[0].nodeValue);
        document.write("</br>");
        document.write(element.getElementsByTagName("price")[0].childNodes[0].nodeValue);
        document.write("</br>");
    };
    handlerXML(xmlFilePath,xpath,callback);
}
 
function handlerXML(xmlFilePath,xpath,callback)
{
    var xml=loadXMLDoc1(xmlFilePath);
    var action;
    if (window.ActiveXObject)
    {
        var nodes=xml.selectNodes(xpath);
        for (i=0;i<nodes.length;i++){
            callback(nodes[i]);
        }
    }else if (document.implementation
&& document.implementation.createDocument){
        var nodes=xml.evaluate(xpath,
xml,
null,
XPathResult.ANY_TYPE,
null);
        var result=nodes.iterateNext();
        while (result){
            callback(result);
            result=nodes.iterateNext();
        }
    }
}

JavaScript遍历XML总结的更多相关文章

  1. JavaScript操作XML

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

  2. XML DOM 遍历Xml文档

    1.xml文档内容: <?xml version="1.0" encoding="utf-8" ?> <bookstore> <b ...

  3. JavaScript操作XML(二)

    上一篇介绍了XML的结构以及节点之间的关系这一篇介绍浏览器内建的XML解析器以及JavaScript是如何加载XML的. 大多数浏览器都有读取和操作 XML 的内建 XML 解析器. 解析器(XML ...

  4. JavaScript操作XML工作记录

    JavaScript操作XML (一) JavaScript操作XML是通过XML DOM来完成的.那么什么是XML DOM呢?XML DOM 是: 用于 XML 的标准对象模型 用于 XML 的标准 ...

  5. ajax-异步JavaScript和XML

    什么是ajax? ajax是异步的javascript和XML ( Asynchronous Javascript And XML ) 优点:节省用户操作时间,提高用户体验.减少数据请求次数. 什么是 ...

  6. C#遍历XML文件动态加载菜单

    通过遍历XML文件动态加载菜单,顺便利用WebBrowser控件实现一个简单的桌面浏览器 效果如下: 代码如下: XMLFile1.xml <?xml version="1.0&quo ...

  7. 18. javacript高级程序设计-JavaScript与XML

    1. JavaScript与XML IE采取了下列方式: l 通过ActiveX对象来支持处理XML,而相同的对象也可以用来构建桌面应用程序 l Windows携带了MSXML库,JavaScript ...

  8. [VBS]遍历XML文档

    一.脚本源码 使用VBS脚本遍历XML文件 Option Explicit '定义常量 '元素 '文本 'CDATA '实体引用 '实体 '处理指令 '注释 '文档类型 '遍历文件 NameList. ...

  9. JavaScript遍历table的行和列

    来源:http://blog.csdn.net/bobwu/article/details/7497412 <HTML> <head> <SCRIPT LANGUAGE= ...

随机推荐

  1. Portlet开发入门实例

    1原生Portlet开发 这是最简单.最本质的开发方式,直接基于Portlet规范定义的接口开发Portlet.优点是贴近底层比较灵活, 缺点当然就是所有事情都要自己去做.就好比不用SpringMVC ...

  2. Cocos2D iOS之旅:如何写一个敲地鼠游戏(四):创建TexturePacker自动脚本

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  3. (NO.00004)iOS实现打砖块游戏(一):素材的制作

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 本系列来实现一个儿时就很喜欢的打砖块游戏,我记得以前红白机上有一 ...

  4. Android开发模式之MVC,MVP和MVVM的简单介绍与区别

    相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候 ...

  5. iOS中 WGAFN_网络监控 技术分享

    需要用到第三方AFNetworking/SVProgressHUD 没有的可以关注我微博私信我.http://weibo.com/hanjunqiang AppDelegate.m #import & ...

  6. Java学习从菜鸟变大鸟之二 输入输出流(IO)

    在软件开发中,数据流和数据库操作占据了一个很重要的位置,所以,熟悉操作数据流和数据库,对于每一个开发者来说都是很重要的,今天就来总结一下JavaI/O. 流 流是一个很形象的概念,当程序需要读取数据的 ...

  7. pig加载两个不同字段个数的文件?load file with different items(f1有42列,f2有43列读到一个对象中)

    我文章提到,加载一个文件的部分列是可行.两列,你只读一列,没问题. 但是,两个文件,f1和f2,f1有42列,f2有43列,同时加载到一个流对象,如何? 答:成功加载.但是无结构(schema unk ...

  8. (NO.00003)iOS游戏简单的机器人投射游戏成形记(十七)

    现在玩家选择机器人后,可以在屏幕上或手臂上点击来移动robot's arm了. 但是玩家选择一个机器人后没有视觉效果来表明哪个机器人被选中.玩家做了一个操作后没有视觉反馈会惹恼强迫症用户滴 ;) 这篇 ...

  9. Hibernate与Spring的事务管理

    什么是事务 这个问题比较大,按照我的理解就是,一个事务内的n个操作,要么全部完成,一旦有一个操作有问题,那么所有的操作都全部回滚. Jdbc的事务 首先,大家已经知道了,事务说白了就是一个词----统 ...

  10. 视音频编解码学习工程:FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...