{"_id":"stricter-htmlparser2","_rev":"4-1c49b70c092d533a75cc08f0d7bad5ed","name":"stricter-htmlparser2","dist-tags":{"latest":"3.9.6"},"versions":{"3.9.3":{"name":"stricter-htmlparser2","description":"Fast & forgiving HTML/XML/RSS parser with stricter attribute parsing rules.","version":"3.9.3","author":{"name":"Felix Boehm","email":"me@feedic.com"},"keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git+ssh://git@github.com/yanghuabei/htmlparser2.git"},"bugs":{"url":"http://github.com/yanghuabei/htmlparser2/issues"},"directories":{"lib":"lib"},"main":"lib/index.js","files":["lib"],"scripts":{"lcov":"istanbul cover _mocha --report lcovonly -- -R spec","coveralls":"npm run lint && npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)","test":"mocha","lint":"eslint lib"},"dependencies":{"domelementtype":"^1.3.0","domhandler":"^2.3.0","domutils":"^1.5.1","entities":"^1.1.1","inherits":"^2.0.1","readable-stream":"^2.0.2"},"devDependencies":{"coveralls":"^3.0.1","eslint":"^4.19.1","istanbul":"^0.4.3","mocha":"^5.2.0","mocha-lcov-reporter":"^1.2.0"},"browser":{"readable-stream":false},"license":"MIT","gitHead":"ad93359fb1c24fe0844cfe7b4ced90fabaa2af4c","homepage":"https://github.com/yanghuabei/htmlparser2#readme","_id":"stricter-htmlparser2@3.9.3","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yanghuabei","email":"yanghuabei@outlook.com"},"dist":{"integrity":"sha512-sAteCetSmkxVL1N92dnPceBVPg2h+WS/GkyNyuS2eNSljUMxxKhQvnnRdGNG+8F/+pWgsw4jyT1Gwd4VkZE2Lw==","shasum":"a0ae75703fe2bb4063f607232320d62c84cb8d62","tarball":"https://registry.npmjs.org/stricter-htmlparser2/-/stricter-htmlparser2-3.9.3.tgz","fileCount":11,"unpackedSize":54035,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbdlkfCRA9TVsSAnZWagAAhxAP/Rmn/TD5kx6rSTeq5gnK\nrKmecqvpgSgyWItJxoZ3+OwX8Fkmmwsub3RrC85bejHuzGO+OAfjAfv/qyXV\ntSQcaA89eGUeGFRzpzhARP9iHRoMZ78GEHqqqutG88PgST/l5a1G6xPAq4cc\nlLzm3nSFPhAYt0uOmC6DXE5mGqehMlqsUjKX5HHFuWkBACQX8VxrNACm1JcC\nKc8uesU1Z2v8MC9AG6h5Ib9UpxKqVuKu2sE8Tf7Sa1K+sXwjWWOH/GtbTooc\n2YMwS0nJ/amXr3tWS8FbzJgRtq18khPqgmL2G4gH0buYUWQeikCt6hR3mZL7\nOMjoQeiMzz4ALxKGX83ZuQrNLA389qlYf3gMkfgp4BOHfbXCK1VcE11D78q9\nhvQQP4mU01Tg5hTT/8O4r0S9S6YLVCDETyiBeY4LEIXHNjw0XfPA52GBIUWP\nwPAdPK6ofeJ36EbQCSZrIvLu/ax4aF43opccnY/a1TsE7s+nJ9U1rL9Ve5Ts\nvSEEPBYGIz8Ihvo26Ud2FquHIpJKql2yG2u0YVErq5mNOKVyteQmmEhD6JRW\nutLwAgjZzuBy/0ti4lEx8ZFiviJyOOvguwsSlltLjPbjoolhl72fVhNq1TOe\nVlCf8N2kgLvRfx9ssQ7rEyYK7Vax3/F65m2pB2luwpo4NFGM3/fdPk2yaA1D\n/HMQ\r\n=ciAP\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIH++JIMoFlzmW3cWRyd/I4CIjW91nRed2N7DkOIcIalrAiEA76tZXVm128RlLyEvIvvdnYUw/MStOesgmuF9umujEZs="}]},"maintainers":[{"name":"yanghuabei","email":"yanghuabei@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stricter-htmlparser2_3.9.3_1534482719382_0.778961870445467"},"_hasShrinkwrap":false},"3.9.4":{"name":"stricter-htmlparser2","description":"Fast & forgiving HTML/XML/RSS parser with stricter attribute parsing rules.","version":"3.9.4","author":{"name":"Felix Boehm","email":"me@feedic.com"},"keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git+ssh://git@github.com/yanghuabei/htmlparser2.git"},"bugs":{"url":"http://github.com/yanghuabei/htmlparser2/issues"},"directories":{"lib":"lib"},"main":"lib/index.js","files":["lib"],"scripts":{"lcov":"istanbul cover _mocha --report lcovonly -- -R spec","coveralls":"npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)","test":"mocha","lint":"eslint lib"},"dependencies":{"domelementtype":"^1.3.0","domutils":"^1.5.1","entities":"^1.1.1","inherits":"^2.0.1","readable-stream":"^2.0.2","x-domhandler":"^2.4.2"},"devDependencies":{"coveralls":"^3.0.1","eslint":"^4.19.1","istanbul":"^0.4.3","mocha":"^5.2.0","mocha-lcov-reporter":"^1.2.0"},"browser":{"readable-stream":false},"license":"MIT","gitHead":"cbbf92d8f01da169f68c2e4fcba8e23b034713ff","homepage":"https://github.com/yanghuabei/htmlparser2#readme","_id":"stricter-htmlparser2@3.9.4","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yanghuabei","email":"yanghuabei@outlook.com"},"dist":{"integrity":"sha512-EoUHZ3hwDIAy9jIPoLQfzeqUVH1CdfH5L67nPc7pAu/IYv4i96EopY7ANffqIwekcFv9OiA4jglZPGt4GXxBXw==","shasum":"8a4ca43e3528f6e2bf7350abbd3dcce516443e73","tarball":"https://registry.npmjs.org/stricter-htmlparser2/-/stricter-htmlparser2-3.9.4.tgz","fileCount":11,"unpackedSize":54775,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeWedCRA9TVsSAnZWagAA3UsQAI9yOJU92O34MSOFasba\n01w2+xj3wcTztZ/YiiD7oD3tn1VXGAcm2DIs2AJE+HezBpCSBymnIdNzJErg\ncMApP+/540gHdsXLzQZDL8qiHqDcYMVTODlqsRUbI9mSp8GjadzpnJ9oUMD3\nZ+OjPLykUhp8GnQsdYNN5KYWP9aOSmgltkJvFCxKVMksbtpgX4ytNL2zo9lC\n+w5JeROfll4h3ZI/BuedpYRGzMH/WzgYBeNjyTVg+awHOxWQS0Fci/lI08gs\nD0SnfIGHTruowMuq2qPp7ldmriS46+9v1c5ZqEuDGy/OPPWEWzY3fq8PPt6A\nu4BQ1SFw/4+0K/ikS9QHDJTtDOfvP3US34nVWfvd/NwlnLdmBC4IV6k8+HbA\n2iUEzQXcgpapgyDLb4ba4EJaQFWYFNQhApVJu3GjyGLKCrilpAYnd55DgbX6\n59ccJ+jqT1gevwEsATbTdWMEDFKYNg7gXxIVTUUrZNVobvqdq6CThUMv60gi\nnk2FE+2ts606tKwwShz8HK4ZH4BFNyL8tnFEQdzsiQR66+6dy7jt9Q0b2+at\neNny8U0d7QOonRN4PKJ7sv1jB0F+xsNBgU4znICgwci/fKWAb70X9yAytQbF\ns1qE424x98gVwjpBJfXikDNUcAvHP5vkO3L2NeshTbOVagvWRUJqYUdxlW+P\nWs2f\r\n=jxmC\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCHYXqG0LsGvOqWfTOhOuZ7IyUaTwGPYZsPuIrtJM2K4gIgbkjwM9MHz3PmGGqdZY/LVgb1M83OYqBfrFEuGAiMgHU="}]},"maintainers":[{"name":"yanghuabei","email":"yanghuabei@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stricter-htmlparser2_3.9.4_1534683037188_0.10280308937342553"},"_hasShrinkwrap":false},"3.9.5":{"name":"stricter-htmlparser2","description":"Fast & forgiving HTML/XML/RSS parser with stricter attribute parsing rules.","version":"3.9.5","author":{"name":"Felix Boehm","email":"me@feedic.com"},"keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git+ssh://git@github.com/yanghuabei/htmlparser2.git"},"bugs":{"url":"http://github.com/yanghuabei/htmlparser2/issues"},"directories":{"lib":"lib"},"main":"lib/index.js","files":["lib"],"scripts":{"lcov":"istanbul cover _mocha --report lcovonly -- -R spec","coveralls":"npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)","test":"mocha","lint":"eslint lib"},"dependencies":{"domelementtype":"^1.3.0","domutils":"^1.5.1","entities":"^1.1.1","inherits":"^2.0.1","readable-stream":"^2.0.2","x-domhandler":"^2.4.2"},"devDependencies":{"coveralls":"^3.0.1","eslint":"^4.19.1","istanbul":"^0.4.3","mocha":"^5.2.0","mocha-lcov-reporter":"^1.2.0"},"browser":{"readable-stream":false},"license":"MIT","gitHead":"845bd6b0deea74e9638dab9cb06587a4a7fbc19b","homepage":"https://github.com/yanghuabei/htmlparser2#readme","_id":"stricter-htmlparser2@3.9.5","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yanghuabei","email":"yanghuabei@outlook.com"},"dist":{"integrity":"sha512-8PYfS67WG4q28x2yOmMI4B8TiyUPgEnCdpdey+Npn3xdbkyW1LO7MOmTgVqL42QuXf0QsaR5VA5C6/1/a2D9vw==","shasum":"9c1395dc0097838244b34d1bb6eaedf8366e087c","tarball":"https://registry.npmjs.org/stricter-htmlparser2/-/stricter-htmlparser2-3.9.5.tgz","fileCount":11,"unpackedSize":55194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbeiYcCRA9TVsSAnZWagAAZOkP/Az1BO81j5iGxrGgsqlJ\nj/DTQFauOulMJsG2+6zSSzhH5srCUyeddZsBavhbkNQfZhyVj9gocXCgxhhv\nNJj+LBMOEgTcD/aK/JvPTMylOKCT3XTQUu059eT+CmwM3uGRfLcx8iHONGaa\nOWe3kaXqZ6GjekmVc57SoV1yLfIzf9nPn7L58ywCjv8Hbiq9e4awrYk68xxs\nOxGDXXpjDKQfAGPwvIKVZxqDexL2QCVxAvz38SPbZLpYoEPyZs8WyVNxzy+f\n8YpHpi60+ULo+GyUtOJVLyHZsD2d+mH0RJ16ZVFWiH9KICfPBGFCobJKhmAN\n4Cb6RjJlA8mJhxuYYuA7z5TVCKehYxRmnJLqCPHSP0ZS5GtxwAjndpBJPE54\nw8Z/QmvPUcPgsQQkVrxi4TC0bxS3H4DbCpHZ+NDQoaqzJZ5lYXIdY7QYUgFN\nyAH6XDxmV2aaKmCD+kC+bbEdXDf7x+NL/IlFeTlSWVH0reh+3wXXqL6UjSz+\n/Ie9Q2Aw6hZRnqAGacfLthgSn011yq9x9Iz/rKs2R/j+8PXur2FKMLsuFnog\nHYcRojWIiP+YGKizGysKG8mSJNQdtL5KyIvcYU7xCFRgTd/rRJAWaP1V7KAS\nI4vdSW2PpqL+qQ9NQT/nKsEUD6w8IcXZCU4cFR9/ujsvZbeAwXrAsgGdAiyq\n+rLd\r\n=sngw\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIAY8Bb4zDGBrKAvmi1pYI+5Wn1MFXGU67h0QXHFhuGVFAiBNw1FVgEHDmf28Vcs8C2B9mV57LG78VuDWALlWLYoMOg=="}]},"maintainers":[{"name":"yanghuabei","email":"yanghuabei@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stricter-htmlparser2_3.9.5_1534731804084_0.1583628456824775"},"_hasShrinkwrap":false},"3.9.6":{"name":"stricter-htmlparser2","description":"Fast & forgiving HTML/XML/RSS parser with stricter attribute parsing rules.","version":"3.9.6","author":{"name":"Felix Boehm","email":"me@feedic.com"},"keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git+ssh://git@github.com/yanghuabei/htmlparser2.git"},"bugs":{"url":"http://github.com/yanghuabei/htmlparser2/issues"},"directories":{"lib":"lib"},"main":"lib/index.js","files":["lib"],"scripts":{"lcov":"istanbul cover _mocha --report lcovonly -- -R spec","coveralls":"npm run lcov && (cat coverage/lcov.info | coveralls || exit 0)","test":"mocha","lint":"eslint lib"},"dependencies":{"domelementtype":"^1.3.0","domutils":"^1.5.1","entities":"^1.1.1","inherits":"^2.0.1","readable-stream":"^2.0.2","x-domhandler":"^2.4.2"},"devDependencies":{"coveralls":"^3.0.1","eslint":"^4.19.1","istanbul":"^0.4.3","mocha":"^5.2.0","mocha-lcov-reporter":"^1.2.0"},"browser":{"readable-stream":false},"license":"MIT","gitHead":"9b2cb0586f8a8d1f20efb8e3db65093b74ccf731","homepage":"https://github.com/yanghuabei/htmlparser2#readme","_id":"stricter-htmlparser2@3.9.6","_npmVersion":"6.2.0","_nodeVersion":"10.8.0","_npmUser":{"name":"yanghuabei","email":"yanghuabei@outlook.com"},"dist":{"integrity":"sha512-w/PqXYnjfpi49nb3xnsizORItMM53M/jHdCL8Cer0OqO3vRLsNDtRKoHY/IkIuGnH7/TEn23yvlZoQQLt7pdrw==","shasum":"fd195f5e4bc0989c6b15fc79eca85c6401bb5045","tarball":"https://registry.npmjs.org/stricter-htmlparser2/-/stricter-htmlparser2-3.9.6.tgz","fileCount":11,"unpackedSize":55194,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbei6cCRA9TVsSAnZWagAA1boP/iXUUr5X6e3TKexH2ujS\nv5M0qaWShnGaJlR/WLyBi4uugV0u4uejpkWnUNswQKIa705Eb57g4Av6zqcw\nv1WtxYVHJfJCHrEg4buiXLWtTvSJIYvCw28Rs92U54jeBEAKw0MjmOK+lS6e\n6Zy7JJ7eP4HvZIgg1Y/qIsLNn27gc11M7ZGOsT72EWlITExYgEYzz4ypMHNt\nh9NWzyhIsymUILS7JpTCICDZe5qyUJaCHnKhlyi4GicbzLz5E3GWhHJpiAJY\nHnz7yMgjJ2n23Qt5bRLIO5imfpMB01UCJlJBgTMUdD6m43I677t3y3Bx/tCb\nFLMfMWxlasQuEiPFi59rURrf6YnQg9yCuWZ5azwIScqTTUkD521+hchsXa5y\nnkVUKi5a1bEseFmxlolQGrkkdSNaXV9mmTfyJ8gJaVZmZC/jZrAmmvupeBa/\nA2dpV+YATiq073F6rPQ+gn+B7XG7MShto4sTYc/lyxn68rXuGuV2nqzSp/vN\n0nCuO8iruWQa06XwTfZj/5nH6F08ZLW7fHO9N4DfmV/6TmUE19V6Wwxtoxwa\ne1F0M58NvpzO5h+mvCq9/ryy+hO9cscaa9Cc39X0hiD7TXxNB6Rc/KBtyJ9b\nALGqucHPvxdrEsrZscnhQxhvgzQgNtb8K3feg9pMgDML5q0jhuI7Kf5mEAL2\noVQK\r\n=i8CQ\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDyMIfpRPWFk+zqwKw5WwqwrPLCuspXyuNh1KnvLBO34gIhAPizORgojII7XLfnXXcRIQ/vcMZ9mAQBlXvks1aGket6"}]},"maintainers":[{"name":"yanghuabei","email":"yanghuabei@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/stricter-htmlparser2_3.9.6_1534733979973_0.19026241749856854"},"_hasShrinkwrap":false}},"time":{"created":"2018-08-17T05:11:59.381Z","3.9.3":"2018-08-17T05:11:59.471Z","modified":"2022-05-18T20:35:16.420Z","3.9.4":"2018-08-19T12:50:37.247Z","3.9.5":"2018-08-20T02:23:24.214Z","3.9.6":"2018-08-20T02:59:40.054Z"},"maintainers":[{"name":"yanghuabei","email":"yanghuabei@outlook.com"}],"description":"Fast & forgiving HTML/XML/RSS parser with stricter attribute parsing rules.","homepage":"https://github.com/yanghuabei/htmlparser2#readme","keywords":["html","parser","streams","xml","dom","rss","feed","atom"],"repository":{"type":"git","url":"git+ssh://git@github.com/yanghuabei/htmlparser2.git"},"author":{"name":"Felix Boehm","email":"me@feedic.com"},"bugs":{"url":"http://github.com/yanghuabei/htmlparser2/issues"},"license":"MIT","readme":"# stricter-htmlparser2\n\n[![NPM version](http://img.shields.io/npm/v/stricter-htmlparser2.svg?style=flat)](https://npmjs.org/package/stricter-htmlparser2)\n[![Downloads](https://img.shields.io/npm/dm/stricter-htmlparser2.svg?style=flat)](https://npmjs.org/package/stricter-htmlparser2)\n[![Build Status](http://img.shields.io/travis/yanghuabei/stricter-htmlparser2/master.svg?style=flat)](http://travis-ci.org/yanghuabei/htmlparser2)\n[![Coverage](http://img.shields.io/coveralls/yanghuabei/stricter-htmlparser2.svg?style=flat)](https://coveralls.io/r/yanghuabei/htmlparser2)\n\nA forgiving HTML/XML/RSS parser. The parser can handle streams and provides a callback interface.\n\n## Installation\n\tnpm install 'stricter-htmlparser2'\n\nA live demo of htmlparser2 is available [here](https://astexplorer.net/#/2AmVrGuGVJ).\n\n## Differences to htmlparser2\n1. Attribute value without quote wrapped is not allowed.\n\n\t```\n\t<foo name=value />\n\n\t// output\n\t{\n\t\tattribs: {\n\t\t\tname: \"\",\n\t\t\tvalue: \"\"\n\t\t}\n\t}\n\t```\n\n2. \"\\\"\" is allowed in attribute value.\n\n\t```\n\t<foo name=\"hello \\\"world\" />\n\n\t// output\n\t{\n\t\tattribs: {\n\t\t\tname: \"hello \\\\\"world\"\n\t\t}\n\t}\n\t```\n\n3. Record attributes key in a object that value is wrapped by single quote. The object is passed to `onopentag` method of parser's domhandler through the third argument.\n\n    ```\n\t<foo name='{{flag ? \"true\" : \"false\"}}' title=\"title\" class='hidden'> </foo>\n\n\t// The third argument passed to onopentag:\n\t{\n\t\tname: true,\n\t\tclass: true\n\t}\n\t```\n\n\t// If used with x-domhandler which is exported by this module, the parse result is like this:\n    ```javascript\n\t{\n\t\ttype: \"tag\",\n\t\tname: \"foo\",\n\t\tattribs: {\n\t\t\tname: \"{{flag ? \\\"true\\\" : \\\"false\\\"}}\",\n\t\t\ttitle: \"title\",\n\t\t\tclass: \"hidden\"\n\t\t},\n\t\tsingleQuoteAttribs: {\n\t\t\tname: true,\n\t\t\tclass: true\n\t\t},\n\t\tselfClose: false\n\t}\n\t```\n\n4. Add `selfClose` flag to parsed node element.\n\n\t**Input:**\n\n\t```html\n\t<foo name='{{flag ? \"true\" : \"false\"}}' title=\"title\" class='hidden' />\n\t```\n\n\t**Parser code:**\n\t```javascript\n\tconst {Parser, DomHandler} = require('stricter-htmlparser2');\n\n\tconst parser = new Parser(new DomHandler(), {}).end(inputStr);\n\t```\n\n\t**Output**\n\t```javascript\n\t{\n\t\ttype: \"tag\",\n\t\tname: \"foo\",\n\t\tattribs: {\n\t\t\tname: \"{{flag ? \\\"true\\\" : \\\"false\\\"}}\",\n\t\t\ttitle: \"title\",\n\t\t\tclass: \"hidden\"\n\t\t},\n\t\tsingleQuoteAttribs: {\n\t\t\tname: true,\n\t\t\tclass: true\n\t\t},\n\t\tselfClose: true\n\t}\n\t```\n\n## Usage\n\n```javascript\nvar htmlparser = require(\"stricter-htmlparser2\");\nvar parser = new htmlparser.Parser({\n\tonopentag: function(name, attribs){\n\t\tif(name === \"script\" && attribs.type === \"text/javascript\"){\n\t\t\tconsole.log(\"JS! Hooray!\");\n\t\t}\n\t},\n\tontext: function(text){\n\t\tconsole.log(\"-->\", text);\n\t},\n\tonclosetag: function(tagname){\n\t\tif(tagname === \"script\"){\n\t\t\tconsole.log(\"That's it?!\");\n\t\t}\n\t}\n}, {decodeEntities: true});\nparser.write(\"Xyz <script type='text/javascript'>var foo = '<<bar>>';</ script>\");\nparser.end();\n```\n\nOutput (simplified):\n\n```\n--> Xyz\nJS! Hooray!\n--> var foo = '<<bar>>';\nThat's it?!\n```\n\n## Documentation\n\nRead more about the parser and its options in the [wiki](https://github.com/fb55/htmlparser2/wiki/Parser-options).\n\n## Get a DOM\nThe `DomHandler` (known as `DefaultHandler` in the original `htmlparser` module) produces a DOM (document object model) that can be manipulated using the [`DomUtils`](https://github.com/fb55/DomUtils) helper.\n\nThe `DomHandler`, while still bundled with this module, was moved to its [own module](https://github.com/fb55/domhandler). Have a look at it for further information.\n\n## Parsing RSS/RDF/Atom Feeds\n\n```javascript\nnew htmlparser.FeedHandler(function(<error> error, <object> feed){\n    ...\n});\n```\n\nNote: While the provided feed handler works for most feeds, you might want to use  [danmactough/node-feedparser](https://github.com/danmactough/node-feedparser), which is much better tested and actively maintained.\n\n## Performance\n\nAfter having some artificial benchmarks for some time, __@AndreasMadsen__ published his [`htmlparser-benchmark`](https://github.com/AndreasMadsen/htmlparser-benchmark), which benchmarks HTML parses based on real-world websites.\n\nAt the time of writing, the latest versions of all supported parsers show the following performance characteristics on [Travis CI](https://travis-ci.org/AndreasMadsen/htmlparser-benchmark/builds/10805007) (please note that Travis doesn't guarantee equal conditions for all tests):\n\n```\ngumbo-parser   : 34.9208 ms/file ± 21.4238\nhtml-parser    : 24.8224 ms/file ± 15.8703\nhtml5          : 419.597 ms/file ± 264.265\nhtmlparser     : 60.0722 ms/file ± 384.844\nhtmlparser2-dom: 12.0749 ms/file ± 6.49474\nhtmlparser2    : 7.49130 ms/file ± 5.74368\nhubbub         : 30.4980 ms/file ± 16.4682\nlibxmljs       : 14.1338 ms/file ± 18.6541\nparse5         : 22.0439 ms/file ± 15.3743\nsax            : 49.6513 ms/file ± 26.6032\n```\n\n## How does this module differ from [node-htmlparser](https://github.com/tautologistics/node-htmlparser)?\n\nThis is a fork of the `htmlparser` module. The main difference is that this is intended to be used only with node (it runs on other platforms using [browserify](https://github.com/substack/node-browserify)). `htmlparser2` was rewritten multiple times and, while it maintains an API that's compatible with `htmlparser` in most cases, the projects don't share any code anymore.\n\nThe parser now provides a callback interface close to [sax.js](https://github.com/isaacs/sax-js) (originally targeted at [readabilitySAX](https://github.com/fb55/readabilitysax)). As a result, old handlers won't work anymore.\n\nThe `DefaultHandler` and the `RssHandler` were renamed to clarify their purpose (to `DomHandler` and `FeedHandler`). The old names are still available when requiring `htmlparser2`, your code should work as expected.\n","readmeFilename":"README.md"}