Security News
JSR Working Group Kicks Off with Ambitious Roadmap and Plans for Open Governance
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
The xpath npm package is a Node.js module that allows users to query XML documents using XPath expressions. It provides a way to navigate and select nodes in an XML document tree, extract information, and manipulate the content.
Evaluating XPath expressions
This feature allows you to evaluate XPath expressions against an XML document and returns the matching nodes.
const xpath = require('xpath'),
dom = require('xmldom').DOMParser;
let doc = new dom().parseFromString('<book><title>Harry Potter</title></book>');
let nodes = xpath.select('//title', doc);
console.log(nodes[0].textContent); // Harry Potter
Registering custom namespaces
This feature enables the use of custom namespaces when evaluating XPath expressions, which is necessary when querying XML documents that include namespaces.
const select = xpath.useNamespaces({
'x': 'http://www.w3.org/1999/xhtml'
});
let nodes = select('//x:div', doc);
Using XPath functions
This feature allows the use of XPath functions within the expression to perform operations like counting nodes, string manipulation, etc.
let result = xpath.select('count(//title)', doc);
console.log(result); // 1
Cheerio is a fast, flexible, and lean implementation of core jQuery designed specifically for the server. It allows for manipulation of the DOM using a familiar jQuery-like API. Cheerio parses markup and provides an API for traversing/manipulating the resulting data structure; it does not interpret XPath but uses CSS selectors instead.
jsdom is a pure-JavaScript implementation of many web standards, notably the WHATWG DOM and HTML Standards, for use with Node.js. It is more of a complete browser environment simulator that can also execute scripts, unlike xpath which is focused solely on XPath queries.
xml2js is a simple XML to JavaScript object converter. It supports bi-directional conversion. Unlike xpath, which is used for querying XML documents, xml2js is used for parsing XML into JavaScript objects and vice versa.
DOM 3 Xpath implemention and helper for node.js.
Originally written by Cameron McCormack (blog).
Thanks to Yaron Naveh (blog).
Install with npm:
npm install xpath
xpath is xml engine agnostic but I recommend to use xmldom:
npm install xmldom
var xpath = require('xpath')
, dom = require('xmldom').DOMParser
var xml = "<book><title>Harry Potter</title></book>"
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: <title>Harry Potter</title>
var xml = "<book><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var title = xpath.select("//title/text()", doc).toString()
console.log(title)
-->
Harry Potter
var xml = "<book><title xmlns='myns'>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var node = xpath.select("//*[local-name(.)='title' and namespace-uri(.)='myns/']", doc)[0]
console.log(node.namespaceURI)
-->
myns
var xml = "<book author='J. K. Rowling'><title>Harry Potter</title></book>"
var doc = new dom().parseFromString(xml)
var author = xpath.select1(doc, "/book/@author").value
console.log(author)
-->
J. K. Rowling
FAQs
DOM 3 XPath implemention and helper for node.js and the web
The npm package xpath receives a total of 2,284,044 weekly downloads. As such, xpath popularity was classified as popular.
We found that xpath demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
At its inaugural meeting, the JSR Working Group outlined plans for an open governance model and a roadmap to enhance JavaScript package management.
Security News
Research
An advanced npm supply chain attack is leveraging Ethereum smart contracts for decentralized, persistent malware control, evading traditional defenses.
Security News
Research
Attackers are impersonating Sindre Sorhus on npm with a fake 'chalk-node' package containing a malicious backdoor to compromise developers' projects.