EZ-XML is a XML library that allows you to easily extract information from XML documents with XPath expressions.
EZ-XML is available as the ez-xml package on npm. Simply install it with
npm i ez-xmlYou can find the following examples as a test here. Given the following XML 1.0 document
<!-- This is my collection of books -->
<library>
<book name="Lifters guide to the galaxy">
<price>42</price>
</book>
<book name="Baby owners manual" isbn="123">
<price>35</price>
</book>
<book name="Wheel of time: The eye of the world">
<price>50</price>
</book>
</library>import {parse} from "ez-xml";
const doc = parse(`<library>...</library>`);Getting the comment:
const comment = doc.find("/comment()")[0]; // This is my collection of booksFinding the second book in a few different ways (quite many ways of doing the same thing in XPath)
const book = doc.single("//book[last()]");
book.attr("name"); // Wheel of time: The eye of the world
book.text("price"); // 50// is an abbrevation for traversing on the descendant-or-self axis. With XPath there are an infinite way of combinations for achieving the same result. For example, getting the third book can be achieved by this as well
doc.single("//book[3]") // NB: XPath starts counting from 1 instead of 0Which is equivalent to
doc.single("/bookstore/book[(3 * 5 + 6) div 7]");Finding a book by it's attribute
doc.find("//book[@name = 'Baby owners manual']/..");Or by its price
doc.find("//book[price = 35]");You can also combine predicates like
doc.find("//book[price > 30 and price < 40]");Or searching for nodes that has certain attributes
doc.find("//book[@name and @isbn]");Or finding all the books that has a position() greater than 2
doc.find("//book[position() > 2]");And a lot of other fun combinations.
ez-xml is released under the MIT license. See the LICENSE file for additional details.
