## xpath DOM 3 Xpath implemention and helper for node.js. Originally written by Cameron McCormack ([blog](http://mcc.id.au/xpathjs)). Thanks to Yaron Naveh ([blog](http://webservices20.blogspot.com/)). ## Install Install with [npm](http://github.com/isaacs/npm): npm install xpath xpath is xml engine agnostic but I recommend to use [xmldom](https://github.com/jindw/xmldom): npm install xmldom ## Your first xpath: `````javascript var xpath = require('xpath') , dom = require('xmldom').DOMParser var xml = "Harry Potter" var doc = new dom().parseFromString(xml) var nodes = xpath.select("//title", doc) console.log(nodes[0].localName + ": " + nodes[0].firstChild.data) console.log("node: " + nodes[0].toString()) ````` --> title: Harry Potter Node: Harry Potter ## Get text values directly `````javascript var xml = "Harry Potter" var doc = new dom().parseFromString(xml) var title = xpath.select("//title/text()", doc).toString() console.log(title) ````` --> Harry Potter ## Namespaces `````javascript var xml = "Harry Potter" var doc = new dom().parseFromString(xml) var node = xpath.select("//*[local-name(.)='title' and namespace-uri(.)='myns/']", doc)[0] console.log(node.namespaceURI) ````` --> myns ## Namespaces with easy mappings `````javascript var xml = "Harry Potter" var select = xpath.useNamespaces({"bookml": "http://example.com/book"}); console.log(select('//bookml:title/text()', doc)[0].nodeValue)); ````` --> Harry Potter ## Default namespace with mapping `````javascript var xml = "Harry Potter" var select = xpath.useNamespaces({"bookml": "http://example.com/book"}); console.log(select('//bookml:title/text()', doc)[0].nodeValue)); ````` --> Harry Potter ## Attributes `````javascript var xml = "Harry Potter" var doc = new dom().parseFromString(xml) var author = xpath.select1("/book/@author", doc).value console.log(author) ````` --> J. K. Rowling