From b4dd742a420b30655b4fed47e777dc4eab7afe83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Heiko=20Thei=C3=9Fen?= Date: Sat, 2 Sep 2023 13:34:24 +0200 Subject: [PATCH] Entities with XML elements --- lib/sax.js | 4 +++- test/entity-elem.js | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 1 deletion(-) create mode 100644 test/entity-elem.js diff --git a/lib/sax.js b/lib/sax.js index 826bb6c..857f1d4 100644 --- a/lib/sax.js +++ b/lib/sax.js @@ -1483,9 +1483,11 @@ } if (c === ';') { - parser[buffer] += parseEntity(parser) + // parser[buffer] += parseEntity(parser) + var parsedEntity = parseEntity(parser) parser.entity = '' parser.state = returnState + parser.write(parsedEntity) } else if (isMatch(parser.entity.length ? entityBody : entityStart, c)) { parser.entity += c } else { diff --git a/test/entity-elem.js b/test/entity-elem.js new file mode 100644 index 0000000..1fa83c2 --- /dev/null +++ b/test/entity-elem.js @@ -0,0 +1,18 @@ +var sax = require('../'); +sax.ENTITIES.attr = "1"; +sax.ENTITIES.text = "2"; +sax.ENTITIES.elem = ''; +require(__dirname).test({ + xml: `&text;&elem;`, + expect: [ + ["opentagstart", {name: "A", attributes: {}}], + ["attribute", {name: 'ATTR', value: "1.2"}], + ["opentag", {name: "A", attributes: {ATTR: "1.2"}, isSelfClosing: false}], + ["text", "2"], + ["opentagstart", {name: "B", attributes: {}}], + ["attribute", {name: 'ATTR', value: "1.3"}], + ["opentag", {name: "B", attributes: {ATTR: "1.3"}, isSelfClosing: true}], + ["closetag", "B"], + ["closetag", "A"] + ] +});