mirror of
https://github.com/NativeScript/NativeScript.git
synced 2025-11-05 13:26:48 +08:00
fix(xml parser): Handle whitespace around attribute =
This commit is contained in:
@@ -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 );
|
||||
|
||||
|
||||
@@ -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']);
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user