- Notifications
You must be signed in to change notification settings - Fork10
pure javascript xml parser - быстрый sax парсер для node.js
License
NotificationsYou must be signed in to change notification settings
vflash/easysax
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Простой и быстрый SAX парсер XML.Парсер не потоковый, и не расчитан на гиганские файлы.Весь XML должен быть в памяти.Встроен механизм работы с пространсвами имен.
Парсер был написан для RSS ридераhttp://zzreader.comНа конец 2017 года остается самым быстрым SAX парсером XML под NODE.JS
$ npm install easysax
https://github.com/vflash/sax-benchmark
sh: node bench-01.js
count - 100000size - 25saxjs : 346.182mslibxml: 852.098msexpat : 705.867msexpat buffer: 712.212msltx: 137.998mseasysax ns=on entityDecode=on getAttr=on : 100.050mseasysax ns=off entityDecode=on getAttr=on : 82.520mseasysax ns=off entityDecode=off getAttr=on : 69.133mseasysax ns=off entityDecode=off getAttr=off: 29.226ms
sh: node bench-02.js
count - 1000size - 22750saxjs : 1484.910mslibxml: 1058.808msexpat : 1028.151msexpat buffer: 853.925msltx: 359.173mseasysax ns=on entityDecode=on getAttr=on : 151.511mseasysax ns=off entityDecode=on getAttr=on : 114.646mseasysax ns=off entityDecode=off getAttr=on : 88.604mseasysax ns=off entityDecode=off getAttr=off: 80.773ms
sh: node bench-03.js
count - 1000size - 121786saxjs : 10765.309mslibxml: 5387.832msexpat : 6734.018msexpat buffer: 5865.209msltx: 2953.910mseasysax ns=on entityDecode=on getAttr=on : 1769.676mseasysax ns=off entityDecode=on getAttr=on : 1475.585mseasysax ns=off entityDecode=off getAttr=on : 1214.665mseasysax ns=off entityDecode=off getAttr=off: 405.799ms
varparser=newEasySax();// если требуется пространство именparser.ns('rss',{'http://www.w3.org/2005/Atom':'atom','http://www.w3.org/1999/xhtml':'xhtml','http://search.yahoo.com/mrss/':'media','http://purl.org/rss/1.0/':'rss','http://purl.org/dc/elements/1.1/':'dc','http://www.w3.org/1999/02/22-rdf-syntax-ns#' :'rdf','http://purl.org/rss/1.0/modules/content/':'content','http://www.yandex.ru':'yandex','http://news.yandex.ru':'yandex','http://backend.userland.com/rss2':'rss'});parser.on('error',function(msg){// console.log('error - ' + msg);});parser.on('startNode',function(elementName,getAttr,isTagEnd,getStringNode){// elementName -- (string) название элемента. при указании пространства имен, то автоматически подставляется префикс// getAttr() -- (function) парсит атрибуты и возврашает обьект.// isTagEnd -- (boolean) флаг что элемент пустой "<elem/>"// getStringNode() -- (function) возвращает нераспарсенная строка элемента. Пример: <item title="text">});parser.on('endNode',function(elementName,isTagStart,getStringNode){// isTagStart -- (boolean) флаг что элемент пустой "<elem/>"});parser.on('textNode',function(text){// text -- (String) строка текста});parser.on('cdata',function(text){// text -- (String) строка текста элемента CDATA});parser.on('comment',function(text){// text - (String) текст комментария});//parser.on('question', function() {}); // <? ... ?>//parser.on('attention', function() {}); // <!XXXXX zzzz="eeee">parser.parse(xml);// xml -- (String) строка xml
About
pure javascript xml parser - быстрый sax парсер для node.js
Resources
License
Stars
Watchers
Forks
Packages0
No packages published