diff --git a/js-libs/easysax/easysax.js b/js-libs/easysax/easysax.js index 9828d8333..8d6a08719 100644 --- a/js-libs/easysax/easysax.js +++ b/js-libs/easysax/easysax.js @@ -263,6 +263,10 @@ function EasySAXParser() { continue; }; + if (w===32 || (w > 8 && w<14) ) { // \f\n\r\t\v пробел + continue; + }; + if (w !== 61) { // "=" == 61 //console.log('error 2'); @@ -272,7 +276,7 @@ function EasySAXParser() { break; }; - name = s.substring(i, j); + name = s.substring(i, j).trim(); ok = true; if (name === 'xmlns:xmlns') { @@ -282,6 +286,14 @@ function EasySAXParser() { w = s.charCodeAt(j+1); + while (w = s.charCodeAt(j+1)) { + if (w===32 || (w > 8 && w<14) ) { // \f\n\r\t\v пробел + j++; + } else { + break; + } + } + if (w === 34) { // '"' j = s.indexOf('"', i = j+2 ); diff --git a/node-tests/test-xml.ts b/node-tests/test-xml.ts index cdb524c4a..e208c4f60 100644 --- a/node-tests/test-xml.ts +++ b/node-tests/test-xml.ts @@ -1,24 +1,31 @@ import {assert} from "chai"; -import {XmlParser, ParserEvent, ParserEventType} from 'xml'; -//import xml = require('xml'); +import xml = require('xml'); describe("xml parser", () => { - it("parses simple element", () => { - let attributes = null; - let element = null; + let last_element = null; + let last_attrs = null; + let parser = null; - var parser = new XmlParser(function (event: ParserEvent) { + beforeEach(() => { + parser = new xml.XmlParser(function (event: xml.ParserEvent) { switch (event.eventType) { - case ParserEventType.StartElement: - element = event.elementName; - attributes = event.attributes; + case xml.ParserEventType.StartElement: + last_element = event.elementName; + last_attrs = event.attributes; break; } }); - - parser.parse(""); - - assert.equal('TextField', element); - assert.equal('hello', attributes['text']); }); + + + it("handles whitespace around attribute =", () => { + let attributes = null; + let element = null; + + parser.parse(""); + + assert.equal('TextField', last_element); + assert.equal('hello', last_attrs['text']); + }); + });