Super small (~60 LOC) library for retrieving values and attributes
from the XML AST generated by xml-reader
with an easy-to-use jQuery-like interface.
Install
npm install --save xml-query
Usage
Reading xml streams/strings
The following XML will be used to illustrate all examples
Bob Alice Hello Bla bla bla
Let's read the XML using xml-reader.
const XmlReader = ; const xml =`<message id="1001" date="2016-06-19"> <from>Bob</from> <to>Alice</to> <subject>Hello</subject> <body>Bla bla bla</body></message>`; const ast = XmlReader;
xmlQuery()
const xmlQuery = ; // creating from single astconst xq = ; // creating from an array of astsconst xq = ;
.get()
Retrieve one of the elements.
; // returns the `subject` node
.find()
Find by name. Including top level nodes and all its children.
; // xmlQuery containing the body element
.has()
Returns true
if it has the given element. Faster than find()
because it stops on first occurence.
; // true
.attr()
Get all attributes. If a name is provided, it returns the value for that key.
; // {id: '1001', date: '2016-06-19'}; // '1001'
.children()
Returns a new xmlQuery object containing the children of the top level elements.
;
.each()
Iterate over a xmlQuery object, executing a function for each element.
;// from// to// subject// body
.map()
Iterate over a xmlQuery object, executing a function for each element. Returns the results in an array.
; // ['from', 'to', 'subject', 'body']
.prop()
Get the value of a property for the first element in the set.
; // 'message'
.text()
Get the combined text contents of each element, including their descendants
text; // 'hello'
.eq()
Returns a new XmlQuery object for the selected element by index
; // xmlQuery containing the 'subject' node
.first()
Returns a new XmlQuery object for the first element. Same as .eq(0)
; // xmlQuery containing the 'from' node
.last()
Returns a new XmlQuery object for the last element. Same as .eq(length - 1)
; // xmlQuery containing the 'body' node
.length
Number of elements. Returns the same result as .size()
length; // 4
.size()
Number of elements. Returns the same result as .length
size; // 4
License
MIT