{"_id":"parallel-xml2json","_rev":"36-c003f2e159b81f1c95c2cc09f8e58bd6","name":"parallel-xml2json","description":"Parallel XML to JSON converter for multi-gigabyte files","dist-tags":{"latest":"0.1.18"},"versions":{"0.1.0":{"name":"parallel-xml2json","version":"0.1.0","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"_id":"parallel-xml2json@0.1.0","dist":{"shasum":"098c5eede955e4f79f55bed967caf42093dafcc1","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.0.tgz","integrity":"sha512-vJ1PulyWkNxSQNl3m9gD7pY7cZ4qD5fWQJBfxoDLY7EHP0x6lgiKZ+O7mrvgLcKXlUOjpP4FX3iajZu0WFDq2g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFVMaExEoaVLVrgYrn8THrntb29gG6/vWKmZbhgllvOfAiEA4OessViHhEo+NHVu8eBY/FFEhCh2tnPwdgZ7ulmWBpI="}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.2":{"name":"parallel-xml2json","version":"0.1.2","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"_id":"parallel-xml2json@0.1.2","dist":{"shasum":"15f7c716d7a1a28118c931a70364261f6a1bd081","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.2.tgz","integrity":"sha512-oNtp9rWPnZSOKEnj12mLvZHet19H58wws2womNhxeTIP4a29O6VyDHGWqs2md7kmOMH6oQfWWPzd8GxIWsP2Fw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGQCYwNEuSUxj1LQjNY97xnubKQSJEIpjDKyrDlt5qVrAiBVCEedG3A5x7m/TZ5RLn6LHejJABQKjIWnqFJoVVeQvQ=="}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.3":{"name":"parallel-xml2json","version":"0.1.3","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"ems":">0.0.0"},"_id":"parallel-xml2json@0.1.3","dist":{"shasum":"16aa02f7020c7ade833ca0b07465019625f614d3","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.3.tgz","integrity":"sha512-ZwsZ3mhbyuLe8COAp54YEVk+WRW0O2rRVNKcTXQRzBdQ/vAIdHGs22l+7Fv4s8/lJ0OEsiGjsZ9T7kQ3LXTKFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDWpQ57Wi+kmetLgTLu/zO+awc7NO/boPrJGj74U1RlaAIhAPZYonARTxckIaafqCF+Szl5z8S1G4oCyO1Dn9CL5H8c"}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.4":{"name":"parallel-xml2json","version":"0.1.4","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"./parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"ems":">0.0.0"},"_id":"parallel-xml2json@0.1.4","dist":{"shasum":"f4b052b726cff4d3b375ccd65c6db744d6a11445","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.4.tgz","integrity":"sha512-oIvEPAaR6+Mn/tNrRwTcYAaKv4W6q6sPHHHDre931seWAK05QmUotKM92gkBO5aCCSWac4baWTJwlb/rSOtPIw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBg9TGKq1KfH2JulYxQnb6DH8i78k4GzeulPhLT9ZgIPAiEAqCkd7SLOFvqWaNEDFGUTk4dzmA9q/qLuob/9CDZ19ZU="}]},"_from":"parallel-xml2json/","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.5":{"name":"parallel-xml2json","version":"0.1.5","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"./parallel-xml2json/parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"ems":">0.0.0"},"_id":"parallel-xml2json@0.1.5","dist":{"shasum":"c14722a5419b650ee05bb9d46df7b7229a0952d3","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.5.tgz","integrity":"sha512-2Dscw20eowkQ6B/IL2Uw3RdbzNlIhw1WHkd3xBOhCkNraVAoVLrrbZ9n0cOZBIsHWsvpGdYvsxf5b35RATb3mA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC1ile74bQAEtVREAHfC7uBotgt7g/KpPzekJFRt3NADgIgdu0E0D5HZe18tQIgBXATyZX73aHR/8Y/EArj6IVKpPM="}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.7":{"name":"parallel-xml2json","version":"0.1.7","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"fs":">=0.1.0","ems":">=0.1.0","xml2js":">=0.1.0"},"_id":"parallel-xml2json@0.1.7","dist":{"shasum":"c96361c671d56e7371dd116beac7b81850b3ac44","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.7.tgz","integrity":"sha512-ojeKDH0SJLLL3aMK3iXosr38GxYkTmfATIlI129qlSBjs1xqSr9BQQVd287sxkDNk0JsQ5j60xnK7MReMrZdFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHTtuYLsa7Z7XErRFisVGJUkMP5SjnuRajB7r22klpP2AiAxjt6PIzi60nnybPhGE5nXazAOVchh0V4QMsDoSg9v3Q=="}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.8":{"name":"parallel-xml2json","version":"0.1.8","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"fs":"*","ems":">=0.1.0","xml2js":">=0.1.0"},"_id":"parallel-xml2json@0.1.8","dist":{"shasum":"d5bb6269e1e93df232a369c7b49e2385a7225781","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.8.tgz","integrity":"sha512-w7WicLA7YCDRvFs3ir8r99n9kM5euj5mkRv48MtKJBdSKZqMCbRKUQmi/XqEgsLZrwrPhEz+UsYabbNvkETFJg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDwjTyZOBj9VBlbOtHWUbDJTdsRyI/30sfnuZQFXviyQwIgaMi5uslHP1JbhrHXTppKE8T47tQZtgrOg6Y9axivBS4="}]},"_from":"parallel-xml2json","_npmVersion":"1.3.24","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}]},"0.1.9":{"name":"parallel-xml2json","version":"0.1.9","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parXML2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"ems":">=0.1.0","xml2js":">=0.1.0"},"gitHead":"1e0ed3ae9b736bef12c9eb76b3dbab6d4d1b95cd","_id":"parallel-xml2json@0.1.9","_shasum":"9c79f4a2dfb36227f969bdfe44aaa37fda4be3d1","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"9c79f4a2dfb36227f969bdfe44aaa37fda4be3d1","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.9.tgz","integrity":"sha512-RlNmCqHkYSWmSLD1FWzwVvIBS77k2EotGAldIe9JsKL2CnX7Ob1Epldf2f0TiE4yFg7OKFQZdEEj1t1+7Jayfg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCTsIosMgjLPUr0uDqDzHLQxHhzg+2Ik40OBQV71NgXwgIgUf4QMEzGnGVBNAydEta9gbzUkryzMXJr92vEHv2mCkQ="}]}},"0.1.10":{"name":"parallel-xml2json","version":"0.1.10","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"ems":">=0.1.0","xml2js":">=0.1.0"},"gitHead":"1025959e8102acd5b05dc2a80315c77b9551aae3","_id":"parallel-xml2json@0.1.10","_shasum":"5e493bab93f92a05681713b9be748ea94267f4cd","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"5e493bab93f92a05681713b9be748ea94267f4cd","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.10.tgz","integrity":"sha512-/x8e99hmltgnOl2NbuPAA7DBL7r6kGENSbZ9LxR3u3jDkOa2dInd0uXFt8NCefnwI7gKX8qeoALnhLJelJaQdg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFkcgM5sS1M4rVRGhTJqK0y2uKDvOxaVF/dw31Ps944/AiEA7213PKYdl0WYJC3dMBV+WLCubWWLPbogeMyAqBsL4/s="}]}},"0.1.11":{"name":"parallel-xml2json","version":"0.1.11","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"./parallel-xml2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"d5dd0d0ba4f7f5a22532266a8280ff68367b4c50","_id":"parallel-xml2json@0.1.11","_shasum":"1fe63f030866ce61d4e8aa64057f1edea4bafd4c","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"1fe63f030866ce61d4e8aa64057f1edea4bafd4c","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.11.tgz","integrity":"sha512-mZVgxoS2xsY1M1rMLAjBkWFunrmUzKkUAUn8iEbL1etfYqzlEvk4m7bo1OvZn5GOfMD+8MuoXJAhnML9P6Ilsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD2OSGG/Na7tGqqX+BpmMQhN6vVfg4C+BGRkpRPmuJnIwIhAIPLb2ilLmBWDZhqy9p9UbDtOBxjTveCG2vgH0MscCCu"}]}},"0.1.12":{"name":"parallel-xml2json","version":"0.1.12","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"./parallel-xml2json.js","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"ffc7b6cfe60f1ce0a416457b93214bb7a2d7e091","_id":"parallel-xml2json@0.1.12","_shasum":"8a679c0be1bf70a51fa098d4b2028ff15b522110","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"8a679c0be1bf70a51fa098d4b2028ff15b522110","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.12.tgz","integrity":"sha512-ViCOq76trzZ5pB7gwPJ3lKjHhf2optYCHheXOmTUv6R1q8QPPwbkG1Mt74r/F2N+ymHtpYWAGX+ENDTOUV5oZA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGs4JZW3Xs3btvNfblPqpa40591Nz2A0dt8ZAgyLngRMAiADVVoGzbv12xmTdE/lE0lNhseRu4EZSt1MNVEvp5sdJA=="}]}},"0.1.13":{"name":"parallel-xml2json","version":"0.1.13","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"2db4b19e1ba1823a9c06597988539524e7a23cbf","_id":"parallel-xml2json@0.1.13","_shasum":"d122baf33d5d1152eb9e1d8674c1e47f01c44849","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"d122baf33d5d1152eb9e1d8674c1e47f01c44849","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.13.tgz","integrity":"sha512-EQ59UoD+EAfvg1sX+uJjWkUHWl/fUj5/9Zs2WRWMHMXoUsfUsggr2e71RiCrG3JlHtC4PggWvbFYnQKoP8NKfQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIFocIi8XcLfAXGOnNYXv1DWzXbdOqOg8nGxJ/Ge3UG3wAiEAlEKlksni9FWH6Gd3v1L2fBl147hmvocZ2rgo9mfihmw="}]}},"0.1.14":{"name":"parallel-xml2json","version":"0.1.14","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"2a28b36442417a4dcd482fa478c81969a3f065bb","_id":"parallel-xml2json@0.1.14","_shasum":"42f66a10c3300be35289817677f65e5afb1dd2ed","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"42f66a10c3300be35289817677f65e5afb1dd2ed","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.14.tgz","integrity":"sha512-YzQqIWx4V+AAepo3QGI1Y29SkujTmialZ0WQroYxXn0ZgBnyVas1vED83GurInMdk5FSghzTbao7ZS+rcmD0iQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCspjPI5ydv4DNxce7cK7iN+nAml83k+C0WPEKlK9DZfAIhAOls26GGD8iEwGbS4xLvUZHSLvLynQ+G2LDXfLu5JgVI"}]}},"0.1.15":{"name":"parallel-xml2json","version":"0.1.15","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"2a28b36442417a4dcd482fa478c81969a3f065bb","_id":"parallel-xml2json@0.1.15","_shasum":"77571a41539d9926cc221e0b50bcacdf78c27976","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"77571a41539d9926cc221e0b50bcacdf78c27976","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.15.tgz","integrity":"sha512-xOIbjlpoJf1g7tPTv+6OUInbWjjD+JRttqwzkqnMJn4GK7F7hQ4WjufHQ2ewYXJw4An4GWjGjXltmEbvAhUNVg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCtbtVSMBWb3dkKVu3sSlST7/UdPP0WTwNfrClpaGdbwQIgeasCsxSUBKwQizlUH1XGT3on1b2KX44LZHlEx1PDyMs="}]}},"0.1.16":{"name":"parallel-xml2json","version":"0.1.16","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"db7a3aa6249800f628775e8271b3feb5306a702a","_id":"parallel-xml2json@0.1.16","_shasum":"b8eb764e008f93c41c004a0e7e03c47fcc53b525","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"b8eb764e008f93c41c004a0e7e03c47fcc53b525","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.16.tgz","integrity":"sha512-oAAK7AevzpMF+PVdEZJBf8bFCyn9SQg5tdRRmtTlSnaAYQZaTnD5KZo6bD1REkCGGMw9K6Iy3J321SzKY4YHcQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZ5k/8DIAZgHWlUA4xLryXIF5So/BUyPGryuK3HNPWlAiADGOpZ5vYRohN0zmEqJTMb8lbIjqUk9InbO0WGSOAIHg=="}]}},"0.1.17":{"name":"parallel-xml2json","version":"0.1.17","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"797b68c7d1dc1700b19cd70160b6ac631e8b0845","_id":"parallel-xml2json@0.1.17","_shasum":"ed7baafb4be1f0f66e465f2d65b3a0a9b0ae00be","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"ed7baafb4be1f0f66e465f2d65b3a0a9b0ae00be","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.17.tgz","integrity":"sha512-7EL9/FAmWCXahmLHqNTCbjDIoISAK37A6Uxdl5RBrZtcWpKPJQ4r5I87pTYLZ7jjy5X2mqJcUrddQsKsJ/PKwQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDONNcEHUVIIXvyQVpKdWnUiDlCMYm4f+7WiobGA8/3KAIhAOvZuPYi8jsaVePUtPM44l2EF+IregyVLFPxGnk26hPd"}]}},"0.1.18":{"name":"parallel-xml2json","version":"0.1.18","author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"description":"Parallel XML to JSON converter for multi-gigabyte files","contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"scripts":{"main":"parallel-xml2json","homepage":"https://synsem.com/EMS.js","license":"BSD"},"dependencies":{"xml2js":">=0.1.0"},"gitHead":"1f9c2a3a19f360122ee4e5dd21b428de9cbd12a8","_id":"parallel-xml2json@0.1.18","_shasum":"9535a68c76e2c64f7caadd469772697c3edb72a8","_from":"parallel-xml2json","_npmVersion":"1.4.18","_npmUser":{"name":"mogill","email":"mogill@synsem.com"},"maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"dist":{"shasum":"9535a68c76e2c64f7caadd469772697c3edb72a8","tarball":"https://registry.npmjs.org/parallel-xml2json/-/parallel-xml2json-0.1.18.tgz","integrity":"sha512-67eh2TWWTykYMlBCSjURK9V1xUi/ndR5H3jpIfJ1jKV1gYLMK7feMSLtm3136ErF0qcQ7tpxxf9t/vsprWqhvw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCKrDQ7Syg89b80n26HVhrWOdRiI5BIF29GXkO2wNI9qwIhAMAQcrfRJNM2iQ2etcMLit+AewKvqu5/+nK4jK/ojkck"}]}}},"readme":"# Parallel XML to JSON Converter\n\nThis Javascript module converts \nlarge XML files to JSON in parallel by extracting \nall the elements with a given tag\nand storing them in EMS shared memory with persistent storage.\n\nAdditional processing may be done with legacy sequential Node.js scripts,\nto which additional [EMS](https://github.com/SyntheticSemantics/ems)-based \nparallelism can be added as needed.\n\n\n### Why Parallel Processing for XML? \nProcessing multi-gigabyte XML files suffers the dual challenges\n of slow serial processing and too large a memory footprint\n for garbage collected languages.\n[EMS](https://github.com/SyntheticSemantics/ems) directly addresses both problems\nwith parallel programming primitives and a unified API for \nsynchronizing access to large amounts of shared data.\n\nShared-nothing parallel programming models like Hadoop are not\napplicable to processing a single XML file, and serial execution\nunder-utilizes expensive disk bandwidth.  This parallel XML\nparser benefits from harnessing both the computing capability of multiple\ncores and parallelism to mask file system latency.\n\n\n## Quick Start\n\nThis script will download the \n[SwissProt database from the University of Washington](http://www.cs.washington.edu/research/xmldatasets/www/repository.html#pir),\ninstall the required NPM modules (EMS, xml2js, and parallel-xml2json),\ncopy the included example into the current directory,\nand load the XML database using 4 processes.\n\n```\ncurl http://www.cs.washington.edu/research/xmldatasets/data/SwissProt/SwissProt.xml.gz | gunzip > SwissProt.xml\nnpm install ems xml2js parallel-xml2json\ncp node_modules/parallel-xml2json/example.js ./\nnode example.js 4 SwissProt.xml Entry 100000\n```\n\nAll the XML data tagged \"Entry\" are stored as JSON in EMS memory,\nthen the program prints some of the contents to the console,\nfirst with a serial loop and then with a parallel loop.\n\n\n### Performance\nUsing 16 cores the program sustains throughput of 17-21MB/sec (totalling\nabout 40MB/sec of I/O including both reading and writing).  This rate\ncorresponds to approximately 1GB/minute to process XML into usable JSON.\nPerformance varies with the length and complexity of the XML data.\n\n## What This Package Does\n\nThe EMS memory region size is conservatively guesstimated on the XML file size, \nand may be as much as double the size of the XML file.\n\nThe following steps are carried out by every process:\n \n1. Open the XML file and create the shared EMS memory\n1. Read a block of the file at an offset based on the current shared loop index\n1. All the matching tags in the block are identified\n1. The [xml2js](https://www.npmjs.org/package/xml2js) NPM package parses the XML into JSON\n1. The JSON value is stored in the EMS array\n\nWhen no XML records remain, a join is performed and the original\nfunction call returns.  The program may continue to process data or\nimmediately exit, in both cases \nthe operating system flushes the EMS memory to the file at some later time.\n\n\n__It is important to node that the converter does not \nmaintain document ordering of the XML elements__, \nmany users expect the document ordering\nalthough this is not actually required in `XML 1.0`.\nTo restore original input order it is possible to sort the \nJSON records,\nplease contact us if you're interested in that capability.\n\n\n## Single-Function API / Example Program\n```\nvar nProcs = parseInt(process.argv[2]);\nvar xmlFilename = process.argv[3];\nvar parXML2json = require('./parXML2json');\nvar ems = require('ems')(nProcs, false, 'fj');\n\n//  Parse XML file in parallel and return the EMS descriptor\n//  other programs use to map this EMS file into memory.\nvar emsParams = parXML2json.parseAll(\n    ems,                                  // Global EMS object\n    nProcs,                               // Number of processes\n    xmlFilename,                          // XML input Filename\n    xmlFilename.replace('.xml', '.ems'),  // EMS output filename\n    process.argv[4],             // XML tag to create JSON object for\n    process.argv[5],    // Maximum number of XML tag-data objects\n    2000000,            // Largest filesystem read operation (in bytes)\n    10000);             // Length of longest possible XML tag-data object\n\n// Ordinary sequential loop to skip through some of the JSON records.\n// All work is performed using only the master thread.\nfor(var idx = 0;  idx < emsParams.nRecords;  idx += Math.floor(emsParams.nRecords/3) ) {\n    console.log('serial readback: ', idx, XML2jsonEMS.readFF(idx) )\n}\n\n//  An EMS fork-join parallel region performs this function\n//  once on every EMS worker process\nems.parallel( function() {\n    //  Parallel loop, iterations are distributed across tasks.\n    //  Static loop scheduling is used only to demonstrate each thread\n    //  having one iteration.\n    ems.parForEach(0, ems.nThreads, function (idx) {\n        console.log('parallel readback', idx, XML2jsonEMS.read(idx));\n    });\n});\n\nprocess.exit(0);  // Required to terminate other EMS processes\n```\n\nThe return value of `parXML2json.parseAll()` is an object:\n```\n{ \n   readEMSDescr : <object>,  // EMS descriptor used by future programs \n   nRecords : <integer>,     // JSON elements are stored at indexes 0...nRecords-1 \n   nBytesParsed : <integer>  // Number of bytes inspected while parsing\n}\n```\n\n### Global `XML2jsonEMS` Variable \nUpon return, every process has the global variable `XML2jsonEMS` defined with\nan EMS object that may be used to access the JSON elements \n(ie: `XML2jsonEMS.read()`).\nThis is required for per-process data persistence during serial regions,\nwithout which all the required modules would need to be reloaded at each fork.\n\n### Function Parameters\n* `ems` - Global EMS object, used to manage parallelism in both the calling program and parse function\n* `nProcs` - Number of processes.  The system may be over-subscribed.\n* `xmlFilename` - XML input Filename.\n* `emsFilename` - EMS output filename.\n* `XMLtag` - Only XML records matching this tag are converted to JSON.  This tag may appear at any level of the hierarchy.\n* `max # tags` - A conservative estimate of the number of XML records in the file.\n* `blockSize` - Decompose the file into blocks of this size (in bytes).  This is the length of each file read operation.\n* `blockOverlap` - Because an XML record may span more than one block, blocks must overlap by\nthe Length of longest possible XML tag-data object.  If underflow occurs, the parser will immediately exit.\n\n\n## Future Work\n* Accept a user defined function that generates an unique key from the XML\n  record and storing the key-value pair in EMS. \n* Sort results into original file order.\n\n\n## License\nThis software and documentation is made available under the BSD license.\nOther commercial and open source licenses are available.\n","maintainers":[{"name":"mogill","email":"mogill@synsem.com"}],"time":{"modified":"2022-06-23T09:47:49.154Z","created":"2014-06-29T18:27:00.625Z","0.1.0":"2014-06-29T18:27:00.625Z","0.1.2":"2014-06-29T18:39:04.804Z","0.1.3":"2014-06-29T19:10:31.028Z","0.1.4":"2014-06-29T19:13:31.489Z","0.1.5":"2014-06-29T19:23:34.411Z","0.1.7":"2014-06-29T22:21:12.516Z","0.1.8":"2014-06-29T22:24:26.776Z","0.1.9":"2014-06-29T22:28:03.675Z","0.1.10":"2014-06-29T22:31:35.943Z","0.1.11":"2014-06-29T22:50:11.028Z","0.1.12":"2014-06-29T23:11:21.262Z","0.1.13":"2014-06-29T23:18:17.008Z","0.1.14":"2014-06-30T00:30:28.448Z","0.1.15":"2014-06-30T00:32:42.542Z","0.1.16":"2014-06-30T00:37:16.309Z","0.1.17":"2014-06-30T03:06:33.548Z","0.1.18":"2014-06-30T16:11:27.393Z"},"contributors":[{"name":"Jace A Mogill","email":"mogill@synsem.com"}],"author":{"name":"Synthetic Semantics","email":"info@synsem.com"},"readmeFilename":"README.md"}