diff --git a/server/core/sax.js b/server/core/sax.js index fb30334d..c921e8be 100644 --- a/server/core/sax.js +++ b/server/core/sax.js @@ -93,6 +93,12 @@ function parseSync(xstr, options) { } tag = tag.toLowerCase(); + if (innerCut.has(tag) && (!cutCounter || cutTag === tag)) { + if (!cutCounter) + cutTag = tag; + cutCounter++; + } + let endTag = (singleTag ? tag : ''); if (tag === '' || tag[0] !== '/') { _onStartNode(tag, tail, singleTag, cutCounter, cutTag); @@ -103,12 +109,6 @@ function parseSync(xstr, options) { if (endTag) _onEndNode(endTag, tail, singleTag, cutCounter, cutTag); - if (innerCut.has(tag) && (!cutCounter || cutTag === tag)) { - if (!cutCounter) - cutTag = tag; - cutCounter++; - } - if (cutTag === endTag) { cutCounter = (cutCounter > 0 ? cutCounter - 1 : 0); if (!cutCounter) @@ -233,6 +233,12 @@ async function parse(xstr, options) { } tag = tag.toLowerCase(); + if (innerCut.has(tag) && (!cutCounter || cutTag === tag)) { + if (!cutCounter) + cutTag = tag; + cutCounter++; + } + let endTag = (singleTag ? tag : ''); if (tag === '' || tag[0] !== '/') { await _onStartNode(tag, tail, singleTag, cutCounter, cutTag); @@ -243,12 +249,6 @@ async function parse(xstr, options) { if (endTag) await _onEndNode(endTag, tail, singleTag, cutCounter, cutTag); - if (innerCut.has(tag) && (!cutCounter || cutTag === tag)) { - if (!cutCounter) - cutTag = tag; - cutCounter++; - } - if (cutTag === endTag) { cutCounter = (cutCounter > 0 ? cutCounter - 1 : 0); if (!cutCounter)