fix(xml parser): Handle whitespace around attribute =

This commit is contained in:
Hristo Deshev
2015-06-04 15:26:17 +03:00
parent b4b5b1e790
commit 2a2c0e5c31
2 changed files with 34 additions and 15 deletions

View File

@@ -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 );

View File

@@ -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("<TextField text='hello' />");
assert.equal('TextField', element);
assert.equal('hello', attributes['text']);
});
it("handles whitespace around attribute =", () => {
let attributes = null;
let element = null;
parser.parse("<TextField text = \n 'hello' />");
assert.equal('TextField', last_element);
assert.equal('hello', last_attrs['text']);
});
});