diff options
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(); |
