Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

pure javascript xml parser - быстрый sax парсер для node.js

License

NotificationsYou must be signed in to change notification settings

vflash/easysax

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

86 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Простой и быстрый SAX парсер XML.Парсер не потоковый, и не расчитан на гиганские файлы.Весь XML должен быть в памяти.Встроен механизм работы с пространсвами имен.

Парсер был написан для RSS ридераhttp://zzreader.comНа конец 2017 года остается самым быстрым SAX парсером XML под NODE.JS

Install

$ npm install easysax

Benchmark

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

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp