xpath与nodejs解析xml
测试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的更多相关文章
- 【JAVA使用XPath、DOM4J解析XML文件,实现对XML文件的CRUD操作】
一.简介 1.使用XPath可以快速精确定位指定的节点,以实现对XML文件的CRUD操作. 2.去网上下载一个“XPath帮助文档”,以便于查看语法等详细信息,最好是那种有很多实例的那种. 3.学习X ...
- Java和NodeJS解析XML对比
Java解析XML 1.接收xml文件或者字符串,转为InputStream 2.使用DocumentBuilderFactory对象将InputStream转为document对象 Document ...
- Java xml 操作(Dom4J修改xml + xPath技术 + SAX解析 + XML约束)
1 XML基础 1)XML的作用 1.1 作为软件配置文件 1.2 作为小型的"数据库" 2)XML语法(由w3c组织规定的) 标签: 标签名不能以数字开头,中间不能有空格,区分大 ...
- XPath 文档 解析XMl
http://www.zvon.org/xxl/XPathTutorial/General_chi/examples.html 简介 XPath由W3C的 XPath 1.0 标准描述.本教程通过实例 ...
- 深入浅出如何解析xml文件---下篇
在上篇博文中,小编主要介绍xml的两种解析方式,分别是dom4j和dom,今天这篇博文,小编主要来简单介绍一下xml的其她两种解析方式sax和jdom. sax解析xml文件 sax,全称是Simp ...
- JDOM,dom4j方式解析XML
<?xml version="1.0" encoding="UTF-8"?> <dataSources> <!-- 定义MySQL ...
- 简单用DOM4J结合XPATH解析XML
由于DOM4J在解析XML时只能一层一层解析,所以当XML文件层数过多时使用会很不方便,结合XPATH就可以直接获取到某个元素 使用dom4j支持xpath的操作的几种主要形式 第一种形式 ...
- JAVA通过XPath解析XML性能比较(原创)
(转载请标明原文地址) 最近在做一个小项目,使用到XML文件解析技术,通过对该技术的了解和使用,总结了以下内容. 1 XML文件解析的4种方法 通常解析XML文件有四种经典的方法.基本的解析方式有两种 ...
- Java解析XML汇总(DOM/SAX/JDOM/DOM4j/XPath)
[目录] 一.[基础知识——扫盲] 二.[DOM.SAX.JDOM.DOM4j简单使用介绍] 三.[性能测试] 四.[对比] 五.[小插曲XPath] 六.[补充] 关键字:Java解析xml.解析x ...
随机推荐
- C代码快速构建框架
#include "stdio.h" typedef char int8_t; typedef short int16_t; typedef int int32_t; typede ...
- 【uoj291】 ZJOI2017—树状数组
http://uoj.ac/problem/291 (题目链接) 题意 一个写错的树状数组有多大的概率与正常树状数组得出的答案一样. Solution 可以发现这个树状数组维护的是后缀和. 所以二维线 ...
- Redis我想入门——数据类型
每一个数据库都有自己的数据类型.同样子redis为我们提供了五种类型的数据——字符串.哈希.列表.集合.有序集合.我们知道关系型数据的数据存放型式是一张二维表.用行和列来表示数据之间的关系.redis ...
- [luogu1655][小朋友的球]
luogu1665 思路 一道第二类斯特兰数的模板题.只不过需要写个高精. f[i][j]表示前i个球放到j个盒子里的方案数.第i个球可以单独一个盒子,所以f[i][j]+=f[i-1][j-1].还 ...
- 服务器内存占用不断的增加 & 任务管理器(PF使用率)不断的增加:关注句柄数
最近一二个月以来,我发现服务器的内存占用正按着每天60M的速度增加. 一台windows 2003的服务器(2G内存),刚刚启起时占用内存:600M左右. 运行20天后,内存占用(PF使用):1.8G ...
- CodeForces 纪念一下这个突破性的时刻
- Softmax 损失-梯度计算
本文介绍Softmax运算.Softmax损失函数及其反向传播梯度计算, 内容上承接前两篇博文 损失函数 & 手推反向传播公式. Softmax 梯度 设有K类, 那么期望标签y形如\([0, ...
- 论C++的发家史以及相对其他语言优缺
C++发家史: 最初导致C++诞生的原因是在Bjarne博士等人试图去分析UNIX的内核的时候,这项工作开始于1979年4月,当时由于没有合适的工具能够有效的分析由于内核分布而造成的网络流量,以及怎样 ...
- 20190417 Spring Security
参考资料 Spring-Security的4.2.12版本官方文档 Spring Security简介
- ansible-playbook && Roles && include
先看一个yml文件示例 --- - hosts: webservers #主机组 vars: ##变量设置 http_port: 80 max_clients: 200 remote_user: ro ...