@iotize/tap
Version:
IoTize Device client for Javascript
47 lines • 2.6 kB
JavaScript
import { parseString as parseAsync } from 'xml2js';
// TODO remove xml2js dependencie
/**
* Convert XML to Javascript Object
*/
export class XMLParser {
/**
* Parse XML input synchonously
* @param xml
*/
parseSync(xml) {
let res = null;
parseAsync(xml, function (err, result) {
if (err !== null) {
throw err;
}
res = result;
});
return res;
}
/**
* Parse XML input async
* @param xml
*/
parse(xml) {
xml = this.cleanifyXml(xml);
return new Promise((resolve, reject) => {
parseAsync(xml, function (err, result) {
if (err !== null) {
reject(err);
}
resolve(result);
});
});
}
/**
* Cleanify the xml input before parsing
* @see http://stackoverflow.com/questions/34783452/cannot-parse-xml-error-non-whitespace-before-first-tag-line-0-column-1-cha
*/
cleanifyXml(xml) {
if (!xml) {
return xml;
}
return xml.replace('\ufeff', '').trim();
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoieG1sLXBhcnNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2NvbmZpZy9pb3RpemUtc3R1ZGlvL3BhcnNlci94bWwvc3JjL3htbC1wYXJzZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBTyxFQUFFLFdBQVcsSUFBSSxVQUFVLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFFbkQsaUNBQWlDO0FBRWpDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDcEI7OztPQUdHO0lBQ0gsU0FBUyxDQUFDLEdBQVc7UUFDbkIsSUFBSSxHQUFHLEdBQVEsSUFBSSxDQUFDO1FBQ3BCLFVBQVUsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFRLEVBQUUsTUFBVztZQUM3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7Z0JBQ2hCLE1BQU0sR0FBRyxDQUFDO2FBQ1g7WUFDRCxHQUFHLEdBQUcsTUFBTSxDQUFDO1FBQ2YsQ0FBQyxDQUFDLENBQUM7UUFDSCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsR0FBVztRQUNmLEdBQUcsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVCLE9BQU8sSUFBSSxPQUFPLENBQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDMUMsVUFBVSxDQUFDLEdBQUcsRUFBRSxVQUFVLEdBQVEsRUFBRSxNQUFXO2dCQUM3QyxJQUFJLEdBQUcsS0FBSyxJQUFJLEVBQUU7b0JBQ2hCLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztpQkFDYjtnQkFDRCxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSCxXQUFXLENBQUMsR0FBVztRQUNyQixJQUFJLENBQUMsR0FBRyxFQUFFO1lBQ1IsT0FBTyxHQUFHLENBQUM7U0FDWjtRQUNELE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDMUMsQ0FBQztDQUNGIn0=