ez-xml
v0.1.2
Published
Parse and query XML files
Downloads
28
Maintainers
Readme
EZ-XML
EZ-XML is a XML library that allows you to easily extract information from XML documents with XPath expressions.
Docs
Installation
EZ-XML is available as the ez-xml
package on npm. Simply install it with
npm i ez-xml
Examples
You 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>
Parsing a document
import {parse} from "ez-xml";
const doc = parse(`<library>...</library>`);
Getting the comment:
const comment = doc.find("/comment()")[0]; // This is my collection of books
Finding 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 0
Which 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.
Licensing
ez-xml is released under the MIT license. See the LICENSE file for additional details.