UNPKG

loaders.gl

Version:

Framework-independent loaders for 3D graphics formats

58 lines (45 loc) 1.56 kB
/* global DOMParser */ export default function parseXML(xml) { if (window.DOMParser) { var xmlDoc = new window.DOMParser().parseFromString(xml, 'application/xml'); var parseError = isXMLParseError(xmlDoc); if (parseError) { throw new Error(parseError); } return xmlDoc; } if (typeof window.ActiveXObject !== 'undefined') { var _xmlDoc = new window.ActiveXObject('Microsoft.XMLDOM'); if (_xmlDoc) { _xmlDoc.async = 'false'; _xmlDoc.loadXML(xml); return _xmlDoc; } } throw new Error('No XML parser available'); } export function parseXMLSupported() { if (typeof window === 'undefined') { return false; } if (window.DOMParser) { return true; } if (typeof window.ActiveXObject !== 'undefined' && new window.ActiveXObject('Microsoft.XMLDOM')) { return true; } return false; } function isXMLParseError(parsedDocument) { var parser = new DOMParser(); var erroneousParse = parser.parseFromString('<', 'text/xml'); var parsererrorNS = erroneousParse.getElementsByTagName('parsererror')[0].namespaceURI; if (parsererrorNS === 'http://www.w3.org/1999/xhtml') { // In PhantomJS the parseerror element doesn't seem to have a special namespace, // so we are just guessing here :( var errorElements = parsedDocument.getElementsByTagName('parsererror'); return errorElements.length ? errorElements[0].innerHTML : null; } return parsedDocument.getElementsByTagNameNS(parsererrorNS, 'parsererror').length > 0; } //# sourceMappingURL=parse-xml.js.map