xpath.js
An xpath module for node, written in pure javascript.
Originally written by Cameron McCormack (blog).
Prepared as a node module by Yaron Naveh (blog, twitter).
Install
Install with npm:
npm install xpath.js
xpath.js is xml engine agnostic but I recommend to use xmldom:
npm install xmldom
Your first xpath:
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())
-->
title: Harry Potter
Node: <title>Harry Potter</title>
Get text values directly
var xml = "<book><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var title = select(doc, "//title/text()")[0].data
console.log(title)
-->
Harry Potter
Namespaces
var xml = "<book><title xmlns='myns'>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var node = select(doc, "//*[local-name(.)='title' and namespace-uri(.)='myns/']")[0]
console.log(node.namespaceURI)
-->
myns
Attributes
var xml = "<book author='J. K. Rowling'><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var author = select(doc, "/book/@author")[0].value
console.log(author)
-->
J. K. Rowling
License
MIT