xpath-stream-empty-mod

0.0.91 • Public • Published

xpath-stream

Added Empty event handler for checking if the stream is empty or not Now when you pipe xpath-stream with the redable stream object, it will emit 'empty' event if the steam is undefined or null. This is usefull in case where the stream is empty due to no xpath result, the data event is never triggered.

xpath transform stream

Install

$ npm install xpath-stream

Usage

var xpathStream = require('xpath-stream');

// string stream
var Readable = require('stream').Readable;
function testStream(str){
  var stream = new Readable({objectMode:true});
  stream.push(str);
  stream.push(null);
  return stream
};

var xml = testStream([
'<items>',
  '<item id="1">',
  '<name type="001">item1</name>',
  '<price>5000</price>',
  '<nest>',
  '<data>nested</data>',
  '<nest2><data>nested2</data></nest2>',
  '</nest>',
  '</item>',
  '<item id="2"><name type="002">item2</name><price>1000</price></item>',
'</items>'].join(''));

// text node
xml
  .pipe(xpathStream("//item/name/text()"))
  .on('data',console.log);

// attribute value
xml
  .pipe(xpathStream("//item/@id"))
  .on('data',console.log);

// xmldom object
xml
  .pipe(xpathStream("//item"))
  .on('data',console.log);

// object
xml.pipe(xpathStream("//item",{
  id: "./@id",
  type: "name/@type",
  name: "name/text()",
  price: "price/text()",
  nest: {
    data: "nest/data/text()",
    data2: "nest/nest2/data/text()",
    deepNest: {
      deepData: "nest/nest2/data/text()"
    }
  }
}))
.on('data',function(node){
  console.log(JSON.stringify(node));
});

Bonus

$ npm install -g xpath-stream

then

$ xpath-stream "//root/node()" < test.xml

or

$ cat test.xml | xpath-stream "//articles/article[position()=1]/node()"

with namespace

$ xpath-stream --namespace=ns:http://example.com/ns "//ns:item[@ns:id='5A23']" < ./test/test.xml

Readme

Keywords

none

Package Sidebar

Install

npm i xpath-stream-empty-mod

Weekly Downloads

2

Version

0.0.91

License

MIT

Unpacked Size

13.5 kB

Total Files

10

Last publish

Collaborators

  • uditr