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. HTML5中 基本用法及属性 韩俊强的博客

    从今天开始更新H5相关学习:希望大家能一起学习,多学习一门语言,多一门乐趣! 了解Html5: Html5基本属性: <!DOCTYPE html> <html lang=" ...

  2. UNIX网络编程——sockatmark函数

    每当收到一个带外数据时,就有一个与之关联的带外标记.这是发送进程发送带外字节时该字节在发送端普通数据流中的位置.在从套接字读入期间,接收进程通过调用sockatmark函数确定是否处于带外标记. #i ...

  3. 【一天一道LeetCode】#237. Delete Node in a Linked List

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Write a ...

  4. mysql中 REPLACE INTO 和 INSERT INTO 的区别

    mysql中 REPLACE INTO 和 INSERT INTO 的区别 REPLACE INTO 和 INSERT INTO 功能类似,都是像表中插入数据,不同点在于:REPLACE INTO 首 ...

  5. 【Unity Shaders】Reflecting Your World —— Unity3D中的法线贴图和反射

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...

  6. Java实现二叉树的创建和遍历操作(有更新)

    博主强烈建议跳过分割线前面的部分,直接看下文更新的那些即可. 最近在学习二叉树的相关知识,一开始真的是毫无头绪.本来学的是C++二叉树,但苦于编译器老是出故障,于是就转用Java来实现二叉树的操作.但 ...

  7. XML Publisher Report Issues, Recommendations and Errors

    In this Document   Purpose   Questions and Answers   References APPLIES TO: Oracle Process Manufactu ...

  8. OJ题:字符串最后一个单词的长度

    题目描述 计算字符串最后一个单词的长度,单词以空格隔开. 输入描述: 一行字符串,非空,长度小于5000. 输出描述: 整数N,最后一个单词的长度. 输入例子: hello world 输出例子: 5 ...

  9. JSP编译成Servlet(一)语法树的生成——语法解析

    一般来说,语句按一定规则进行推导后会形成一个语法树,这种树状结构有利于对语句结构层次的描述.同样Jasper对JSP语法解析后也会生成一棵树,这棵树各个节点包含了不同的信息,但对于JSP来说解析后的语 ...

  10. org/w3c/dom/ElementTraversal 错误解决办法

    org/w3c/dom/ElementTraversal 错误解决办法 不记得之前几天把什么maven依赖包删除了,今天利用htmlunit运行代码的时候报了下面的错误: Exception in t ...