Проверка разметки XML на JavaScript

Введите что-нибудь для проверки XML-разметки:


// 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-сущности и реализовал свою версию с комментариями.

© Селезнёв Д. Л. 2012
Электронная почта: info@webfilin.ru