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']);
+ });
+
});