{"id":17403125,"url":"https://github.com/thlorenz/exmala","last_synced_at":"2025-07-31T11:14:09.255Z","repository":{"id":23510557,"uuid":"26876462","full_name":"thlorenz/exmala","owner":"thlorenz","description":"Comparing different approaches to parse large XML messages.","archived":false,"fork":false,"pushed_at":"2018-08-29T20:21:33.000Z","size":14178,"stargazers_count":10,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"gh-pages","last_synced_at":"2025-04-30T05:04:01.425Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"http://thlorenz.github.io/exmala/client/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/thlorenz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-11-19T18:58:20.000Z","updated_at":"2019-04-06T05:13:55.000Z","dependencies_parsed_at":"2022-07-10T09:30:41.496Z","dependency_job_id":null,"html_url":"https://github.com/thlorenz/exmala","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/thlorenz/exmala","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thlorenz%2Fexmala","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thlorenz%2Fexmala/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thlorenz%2Fexmala/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thlorenz%2Fexmala/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/thlorenz","download_url":"https://codeload.github.com/thlorenz/exmala/tar.gz/refs/heads/gh-pages","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/thlorenz%2Fexmala/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268028294,"owners_count":24183811,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-07-31T02:00:08.723Z","response_time":66,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-16T18:54:35.083Z","updated_at":"2025-07-31T11:14:09.235Z","avatar_url":"https://github.com/thlorenz.png","language":"JavaScript","readme":"# exmala\n\nComparing different approaches to parse large XML messages.\n\n[![img](assets/buffering-streaming-htmlparser.gif)](http://thlorenz.github.io/exmala/client/)\n\n## Streaming\n\nWhen not buffering and writing to multiple parsers at once we risk running out of memory since all these parsers keep\na stack and other stateful things around that cost us memory.\n\nDepending on the parser lib we use that happens at a specific level of concurrency.\n\n#### htmlparser2\n\n```\nsettings:\n   { parser: 'htmlparser',\n     streaming: true,\n     concurrency: 1000,\n     number: 2000,\n     gc: false,\n     file: '/Users/thlorenz/dev/js/exmala/data/ibm-request.soap.xml',\n     resultsFile: '/Users/thlorenz/dev/js/exmala/results/streaming-htmlparser-c1000-n2000_ibm-request.soap.xml.json' } }\nFATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory\n```\n\n#### xml2js \n\n```\n{ settings:\n   { parser: 'xml2js',\n     streaming: true,\n     concurrency: 500,\n     number: 2000,\n     gc: false,\n     file: '/Users/thlorenz/dev/js/exmala/data/ibm-request.soap.xml',\n     resultsFile: '/Users/thlorenz/dev/js/exmala/results/streaming-xml2js-c500-n2000_ibm-request.soap.xml.json' } }\nFATAL ERROR: CALL_AND_RETRY_2 Allocation failed - process out of memory\n```\n\n## License\n\nMIT\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthlorenz%2Fexmala","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fthlorenz%2Fexmala","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fthlorenz%2Fexmala/lists"}