测试xpath的工具

http://www.freeformatter.com/xpath-tester.html#ad-output

http://www.xpathtester.com/test

教程

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

解析xml可以安装这个包 https://github.com/yaronn/xpath.js支持xpath。使用方法大致如下:

首先安装这个包

npm install xpath.js

再安装下面这个

npm install xmldom

然后就可以使用牛逼的xpath查找xml了

    var select = require('xpath.js')
, dom = require('xmldom').DOMParser var xml = "<book><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var nodes = select(doc, "//title")
console.log(nodes[0].localName + ": " + nodes[0].firstChild.data)
console.log("node: " + nodes[0].toString())

xpath基本用法通过几个实例即可掌握

这里有一段xml

<root xmlns:foo="http://www.foo.org/" xmlns:bar="http://www.bar.org">
<actors>
<actor id="1">Christian Bale</actor>
<actor id="2">Liam Neeson</actor>
<actor id="3">Michael Caine</actor>
</actors>
<foo:singers>
<foo:singer id="4">Tom Waits</foo:singer>
<foo:singer id="5">B.B. King</foo:singer>
<foo:singer id="6">Ray Charles</foo:singer>
</foo:singers>
</root>

1. 选择文档节点

/


2. 选择root节点

/root


3. 选择所有是actors节点的子节点的actor节点

/root/actors/actor


4. 选择所有singer节点,不管他们在文档的什么地方

//foo:singer


5. 选择所有singer元素的id节点,不管他们在文档的什么地方

//foo:singer/@id


6. 选择第一个actor节点的文本

//actor[1]/text()


7. 选择最后一个actor节点

//actor[last()]


8. 选择第一个和第二个actor节点

//actor[position() < 3]


9. 选择所有带有id属性的actor节点

//actor[@id]


10. 选择所有id属性为3的actor节点

//actor[@id=’3′]


11. 选择所有id属性小于3的actor节点

//actor[@id<=3]


12. 选择所有singers节点的子节点

/root/foo:singers/*


13. 选择文档中所有节点

//*


14. 选择所有actor节点与singer节点

//actor|//foo:singer


15. 得到文档中第一个节点的节点名

name(//*[1])


16.得到第一个actor节点的id属性的数量

number(//actor[1]/@id)


17. 得到第一个actor节点的id属性的字符串表示

string(//actor[1]/@id)


18. 得到第一个actor节点内文本的长度

string-length(//actor[1]/text())


19. Select the local name of the first ‘singer’ element, i.e. without the namespace.

local-name(//foo:singer[1])


20. 计算singer节点的数量

count(//foo:singer)


21. Select the sum of the ‘id’ attributes of the ‘singer’ elements.

sum(//foo:singer/@id)

from:http://ju.outofmemory.cn/entry/73154

xpath与nodejs解析xml的更多相关文章

  1. 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】

    一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...

  2. Java和NodeJS解析XML对比

    Java解析XML 1.接收xml文件或者字符串,转为InputStream 2.使用DocumentBuilderFactory对象将InputStream转为document对象 Document ...

  3. Java xml 操作(Dom4J修改xml   + xPath技术  + SAX解析 + XML约束)

    1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...

  4. XPath 文档 解析XMl

    http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 简介 XPath由W3C的 XPath 1.0 标准描述.本教程通过实例 ...

  5. 深入浅出如何解析xml文件---下篇

    在上篇博文中,小编主要介绍xml的两种解析方式,分别是dom4j和dom,今天这篇博文,小编主要来简单介绍一下xml的其她两种解析方式sax和jdom.  sax解析xml文件 sax,全称是Simp ...

  6. JDOM,dom4j方式解析XML

    <?xml version="1.0" encoding="UTF-8"?> <dataSources> <!-- 定义MySQL ...

  7. 简单用DOM4J结合XPATH解析XML

    由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式    第一种形式   ...

  8. JAVA通过XPath解析XML性能比较(原创)

    (转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...

  9. Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)

    [目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...

随机推荐

  1. CF1114F Please, another Queries on Array?(线段树,数论,欧拉函数,状态压缩)

    这题我在考场上也是想出了正解的……但是没调出来. 题目链接:CF原网 题目大意:给一个长度为 $n$ 的序列 $a$,$q$ 个操作:区间乘 $x$,求区间乘积的欧拉函数模 $10^9+7$ 的值. ...

  2. Java -- JDBC_利用反射及 JDBC 元数据编写通用的查询方法

    先利用 SQL 进行查询,得到结果集: 利用反射创建实体类的对象:创建对象: 获取结果集的列的别名: 再获取结果集的每一列的值, 结合 3 得到一个 Map,键:列的别名,值:列的值: 再利用反射为 ...

  3. A1086. Tree Traversals Again

    An inorder binary tree traversal can be implemented in a non-recursive way with a stack. For example ...

  4. 智能指针unique_ptr

    转自:https://www.cnblogs.com/DswCnblog/p/5628195.html 成员函数 (1) get 获得内部对象的指针, 由于已经重载了()方法, 因此和直接使用对象是一 ...

  5. Linux:打印(输出)所有的列(awk, $0)

    如果想输出所有的列的话,只需要$0这个函数,例如以下命令: awk '/rs16945916/ {print $0}' test.txt > allcol.txt rs16945916指的是打印 ...

  6. visio子流程创建

    已经画好了流程,想将一部分抽取成子流程: 多选中要抽取成子流程的的框图,点 菜单栏  中的 进程 选项,点此选项卡下面的第三个按钮: 根据所选内容创建 这样就会自动生成子流程,子流程的具体位置在 左下 ...

  7. Elasticsearch5.5 部署Head插件

    Elasticsearch5.5 部署Head插件 1.git下载软件包 yum -y install git git clone git://github.com/mobz/elasticsearc ...

  8. curl命令的基本使用

    curl命令的基本使用 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. curl是基于URL语法在命令行方式下工作的文件传输工具,它支持FTP,FTPS,HTTP,HTTPS,GOP ...

  9. js event 冒泡和捕获事件详细介绍【转】

    冒泡和捕获 冒泡: 事件从内向外,从下向上执行 (默认行为) 捕获: 事件从外向内,从上向下执行 vue之capture 捕获事件 capture.html <!DOCTYPE html> ...

  10. CentOS下设置vim的tab键为4格

    # vim /etc/vimrc 在最后一行添加 set softtabstop=4 或者set tabstop=4 或者在~/.vimrc中添加也可以 没有~/.vimrc文件可以创建一个 另: s ...