Guest User

Untitled

a guest
May 22nd, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. var sys = require('sys'),
  2. fs = require('fs'),
  3. b = require('buffer');
  4. var libxml = require('./libxmljs');
  5.  
  6. var stack = [];
  7. var parser = new libxml.SaxPushParser(function(cb) {
  8. cb.onStartDocument(function() {
  9. sys.log('Starting to parse ...');
  10. });
  11. cb.onStartElementNS(function(elem, attrs, prefix, uri, namespaces) {
  12. var obj = {};
  13. obj['@'] = {};
  14. obj['#'] = "";
  15. for (var i=0,len=attrs.length; i<len; i++)
  16. obj['@'][attrs[i][0]] = attrs[i][3];
  17. stack.push(obj);
  18. });
  19. cb.onEndElementNS(function(elem, prefix, uri) {
  20. var obj = stack.pop();
  21. if (stack.length > 0) {
  22. if (typeof stack[stack.length-1][elem] == 'undefined')
  23. stack[stack.length-1][elem] = obj;
  24. else if (stack[stack.length-1][elem] instanceof Array)
  25. stack[stack.length-1][elem].push(obj);
  26. else {
  27. var old = stack[stack.length-1][elem];
  28. stack[stack.length-1][elem] = [];
  29. stack[stack.length-1][elem].push(old);
  30. }
  31. } else {
  32. sys.log('Done!');
  33. sys.puts(sys.inspect(obj, false, 1));
  34. }
  35. });
  36. cb.onCharacters(function(chars) {
  37. if (chars.trim() != "")
  38. stack[stack.length-1]['#'] += chars.trim();
  39. });
  40. });
  41.  
  42. var fstream = fs.createReadStream("products.xml", { 'flags': 'r', 'encoding': 'utf8', 'mode': 0666, 'bufferSize': 4096 });
  43. fstream.addListener('data', function(chunk) {
  44. parser.push(chunk.toString());
  45. });
Add Comment
Please, Sign In to add comment