zoukankan      html  css  js  c++  java
  • JavaScript遍历XML总结

    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();
            }
        }
    }

     

  • 相关阅读:
    获取父子栏目内容的知识点总结:更多信息页面的信息内容获取
    获取栏目内容的知识点总结:SingleInfoSortPortlet类型笔记(单栏目的获取)
    JBPM插件安装(MyEclipse8.5测试成功)和配置
    获取栏目内容的知识点总结:KnobInfoSortPortlet类型笔记(没有层级关系的栏目信息)
    HTML的事件说明
    正交投影、格拉姆施密特正交(一)
    子级Repeater获取父级Repeater绑定项的值
    启用IIS6的Gzip压缩功能
    属性IsLocked不可用于登录"[sa]解决办法
    在IE流览器中正确显示PNG透明图片
  • 原文地址:https://www.cnblogs.com/baiduligang/p/4247600.html
Copyright © 2011-2022 走看看