zoukankan      html  css  js  c++  java
  • XPath 初步讲解

    2016-05-05

    XPath是JavaScript 中节点查找手段,ie9以后的版本才支持w3c标准,其他浏览器基本支持。在e8之前的浏览器,通过基于 activeX的xml dom对象实现。

    为了便于测试先写出两个将xml字符串解析和将xml对象序列化的函数:

    //解析xml字符串
    function parseXML(xmlstr){
      var doParse=new DOMParser();
      var xmlDom=doParse.parseFromString(xmlStr,'text/xml');
    return xmlDom;  
        
    }
    //序列化字符串
    function serializeXML(xmlDom){
    var ser=new XMLSerializer();
    var serString=ser.serializeToString(xmlDom);
    return serString;
    }

    在ie9之前的浏览器中,实现xpath方法如下

    对于获取单个节点

    //获取单个节点
    var node=xmlDom.selectSingleNode('root/user');
    //用//可以忽略节点层次直接获取某个名称节点
    //var node=xmlDom.selectSingleNode('//user[1]/text()');
    //用/只能找到直系儿子,用//可以找到任意层次的后代,
    //var node=xmlDom.selectSingleNode('root//user[1]/text()');
    //id获取某个节点
    //var //node=xmlDom.selectSingleNode('root//user[@id=6]');
    //获取同级第二个节点的文本
    var node=xmlDom.selectSingleNode('root/user[1]/text()');
    alert(serializeXML(node));

     这个xml dom节点是上下文对象,节点默认指向root前,如果变动了节点指针位置,必须和路径相互配合好,不然会出错!!!

    获取多个节点

    var node=xmlDom.selectNodes('root/user');
    alert(node.length);

    标准w3c两种创建xml dom方法,利用两个对象XpathResult XpathEvaluator 

    //用第一种方法利用XPATHEVALUATOR XPathResult对象创建单一节点

    var eva=new XPathEvaluator();

    var result=eva.evaluate('root/user',xmlDom,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null);

    alert(serializeXML(result));

    //第二种方法创建多个节点即不用new 出XPathEvaluator 对象

    var result1=xmlDom.evaluate('root/user',xmlDom,null,XPathResult.ORDERED_NODE_ITERATOR_TYPE,null);

    //创建一个节点数组存放多个节点
    if(result1!=null)
    {

    
    

    var nodes=[];
    var node=result1.iterateNext();
    while(node!==null)
    {
    nodes.push(node);
    node=result1.iterateNext();
    }
    }
    alert(parseXML(nodes[1]));

    
    
    );
     
  • 相关阅读:
    NHibernate连接Oracle配置问题
    事件之 textField
    加入了有生命力的团队
    亲临 Adobe CS4 新产品发布会
    flash打开exe程序
    Lite:AMC MMI
    Lite:SharedObject对象保存数据 到Pc 或手机
    忙忙碌碌
    as3.0过渡完毕,用as3 做了几个Air程序
    getURL("mailTo:wangnai789@sina.com")给多人发送邮件
  • 原文地址:https://www.cnblogs.com/liyu2012/p/5460417.html
Copyright © 2011-2022 走看看