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]));


);
 

XPath 初步讲解的更多相关文章

  1. xpath详细讲解

    什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML 的设计宗旨是传输数据,而非显示数据 XML 的标签需要 ...

  2. yii2初步讲解 验证规则

    http://www.yii-china.com/post/detail/9.html

  3. 全方面讲解TensorFlow

    任何曾经试图在 Python 中只利用 NumPy 编写神经网络代码的人都知道那是多么麻烦.编写一个简单的一层前馈网络的代码尚且需要 40 多行代码,当增加层数时,编写代码将会更加困难,执行时间也会更 ...

  4. ContentProvider数据库共享之——实例讲解

      版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/harvic880925/article/details/44591631 前言:现在这段时间没这 ...

  5. MySQL/RDS数据如何同步到MaxCompute之实践讲解

    摘要:大数据计算服务(MaxCompute,原名ODPS)是阿里云提供的一种快速.完全托管的EB级数据仓库解决方案.本文章中阿里云MaxCompute公有云技术支持人员刘力夺通过一个实验向大家介绍了阿 ...

  6. 在Linux下如何使用GCC编译程序、简单生成 静态库及动态库

      最近在编写的一个Apache  kafka 的C/C++客户端,,在看他写的 example中,他的编译是用librdkafka++.a和librdkafka.a    静态库编译的,,,而我们这 ...

  7. Understand:高效代码静态分析神器详解(转)

    之前用Windows系统,一直用source insight查看代码非常方便,但是年前换到mac下面,虽说很多东西都方便了,但是却没有了静态代码分析工具,很幸运,前段时间找到一款比source ins ...

  8. 循环神经网络(RNN, Recurrent Neural Networks)介绍(转载)

    循环神经网络(RNN, Recurrent Neural Networks)介绍    这篇文章很多内容是参考:http://www.wildml.com/2015/09/recurrent-neur ...

  9. 微信公众账号开发教程(二) 基础框架搭建——转自http://www.cnblogs.com/yank/p/3392394.html

    上一章,我们已经初步讲解了微信公众账号开发的基本原理,今天我们来探索设计实现. 首先我们设计了模块层次图,当然图中只是给出一种实现方式,不局限于此.具体见下图. 主要功能介绍如下: 1)请求接口层.处 ...

随机推荐

  1. python写的百度贴吧相册下载

    突然想搞个这样的工具,写来写去都不知道在干嘛了,本来两个文件,现在整合在一起了. 乱得不行,懒得整理了,能用就行. 下载部分用了多线程,但是下载一个文件还是用的单线程,也就是没管http头的range ...

  2. Educational Codeforces Round 1 C. Nearest vectors 极角排序

    Partial Tree Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/598/problem/ ...

  3. TC SRM 663 div2 A ChessFloor 暴力

    ChessFloor Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 TC Description Samantha is renovating a squa ...

  4. 第一周:读取XML深度数据并将其重建为三维点云

    本周主要任务:学习PCL点云库,掌握利用PCL对点云处理的方法 任务时间:2014年9月1日-2014年9月7日 任务完成情况:完成了读取单幅xml深度数据,并重建三维点云并显示 任务涉及基本方法: ...

  5. search result

    https://github.com/search?l=java&p=86&q=Floating+window&type=Code&utf8=%E2%9C%93http ...

  6. php生成CSV格式(转)

    参考网址: php对csv文件的常用操作集合 http://blog.xhbin.com/archives/748 1,下载CSV格式文档 唯一需要特别注意的是编码. <? include_on ...

  7. Python学习 之 正则表达式

    1.简单的正则表达式 import re s=r'abc' re.findall(s,"aaaaaaaaaaaaaaa") #结果为[] re.findall(s,"ab ...

  8. Link List

    At first, i prepared to go through <the introduction to algorithm> ,however , i found some par ...

  9. oracle SELECT INTO 和 INSERT INTO SELECT 两种表复制语句详解

    我们经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中,这时候我们就要使用SELECT INTO 和 INSERT INT ...

  10. C#项目代码规范

    C#项目代码规范   前言 小菜就是小菜,几个人搞出来的项目,让公司大牛稍微看了下,最后送出了惨不忍睹四个字.命名各种各样,五花八门,大写英文.小写英文.大写拼音.小写拼音.英文和拼音组合.字母和特殊 ...