diff options
| author | Michael Williamson <mike@zwobble.org> | 2013-04-11 19:41:40 +0100 |
|---|---|---|
| committer | Michael Williamson <mike@zwobble.org> | 2013-04-11 19:41:40 +0100 |
| commit | 9fdb851306e79d5ebe72c0e3e81a9b19ce0d79dc (patch) | |
| tree | 182e6cac89fa3366635b675685ed3801d7d6578c /lib/xmlreader.js | |
| parent | d95bd3a2f9aed82645235e330266052296a281c5 (diff) | |
Handle errors in XML parsing
Diffstat (limited to 'lib/xmlreader.js')
| -rw-r--r-- | lib/xmlreader.js | 23 |
1 files changed, 14 insertions, 9 deletions
diff --git a/lib/xmlreader.js b/lib/xmlreader.js index ef16f7b..3fde762 100644 --- a/lib/xmlreader.js +++ b/lib/xmlreader.js @@ -8,14 +8,9 @@ exports.Element = Element; function read(xmlString, namespaceMap) { namespaceMap = namespaceMap || {}; + var finished = false; var parser = sax.parser(true, {xmlns: true, position: false}); - //~ parser.onerror = function(error) { - //~ Q.fcall(function () { - //~ throw new Error("Can't do it"); - //~ }); - //~ }; - var rootElement = {children: []}; var currentElement = rootElement; var stack = []; @@ -62,9 +57,19 @@ function read(xmlString, namespaceMap) { }; parser.onend = function() { - deferred.resolve({ - root: rootElement.children[0] - }); + if (!finished) { + finished = true; + deferred.resolve({ + root: rootElement.children[0] + }); + } + }; + + parser.onerror = function(error) { + if (!finished) { + finished = true; + deferred.reject(error); + } }; parser.write(xmlString).close(); |
