// 0 - НЕПРАВИЛЬНО сформированный xml // 1 - правильно сформированный xml // 2 - нет возможности проверки xml (отсутствует DOMParser) function is_xml(text) { var xmlString = '<innerRoot>' + text + '</innerRoot>'; if (window.DOMParser) { var parser = new DOMParser(); parser.strictErrorChecking = true; try { var nodes = parser.parseFromString(xmlString, 'text/xml').documentElement; } catch (e) { // Opera return 0; } if (nodes.tagName == 'parserError' || nodes.namespaceURI == 'http://www.mozilla.org/newlayout/xml/parsererror.xml') { // Mozilla return 0; } if (nodes.firstChild != null) { // Safari if (nodes.firstChild.toString() == '[object HTMLElement]') return 0; } } else if (window.ActiveXObject) { // Internet Explorer var myDocument; try { myDocument = new ActiveXObject('Microsoft.XMLDOM'); } catch (e) { return 2; } myDocument.async = false; if (myDocument.loadXML(xmlString) == false) return 0; } else return 2; return 1; }
P. S.: Александр Мядзель сообщил мне (спасибо ему за это), что в моей проверке XML не проходят html-сущности и реализовал свою версию с комментариями.