DOMParser

Experimental

Это экспериментальная технология
Так как спецификация этой технологии ещё не стабилизировалась, смотрите таблицу совместимости по поводу использования в различных браузерах. Также заметьте, что синтаксис и поведение экспериментальной технологии может измениться в будущих версиях браузеров, вслед за изменениями спецификации.

DOMParser может парсить XML или HTML источник содержащийся в строке в DOM Document. Спецификация DOMParser находится в DOM Parsing and Serialization.

Заметьте, что XMLHttpRequest поддерживает парсинг XML и HTML из интернет ресурсов (по ссылке)

Создание DOMParser

Для того чтобы создать DOMParser просто используйте new DOMParser().

Для большей информации о создании DOMParser в расширениях Firefox, пожалуйста прочитайте документацию : nsIDOMParser.

Парсинг XML

Как только вы создали объект парсера, вы можете парсить XML из строки, используя метод parseFromString:

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");

Обработка ошибок

Заметьте, если процесс парсинга не удастся , DOMParser теперь не выдаёт исключение, но вместо этого выдаёт документ ошибки (see баг 45566):

<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(Описание ошибки)
<sourcetext>(отрывок XML документа)</sourcetext>
</parsererror>

Ошибки синтаксического анализа также сообщаются в консоль ошибок, с идентификатором URI документа (см. Ниже) в качестве источника ошибки.

Разбор SVG или HTML

DOMParser так же может быть использован для разбора SVG документа (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) или HTML документа (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9). На выходе возможны 3 варианта, в зависимости от переданного MIME типа. Если MIME тип передан как text/xml, результирующий объект будет типа XMLDocument, если image/svg+xml, соответственно SVGDocument, а для MIME типа text/html - HTMLDocument.

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
// возвращает Document, но не SVGDocument или HTMLDocument

parser = new DOMParser();
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml");
// возвращает SVGDocument, который так же является экземпляром класса Document.

parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
// возвращает  HTMLDocument, который так же является экземпляром класса Document.

DOMParser HTML для устаревших браузеров

/*
 * DOMParser HTML extension
 * 2012-09-04
 *
 * By Eli Grey, http://eligrey.com
 * Public domain.
 * КОД РАСПРОСТРАНЯЕТСЯ БЕЗ КАКИХ ЛИБО ГАРАНТИЙ. ИСПОЛЬЗУЙТЕ НА СВОЙ СТРАХ И РИСК.
 */

/*! @source https://gist.github.com/1129031 */
/*global document, DOMParser*/

(function(DOMParser) {
	"use strict";

	var
	  proto = DOMParser.prototype
	, nativeParse = proto.parseFromString
	;

	// Firefox/Opera/IE throw errors on unsupported types
	try {
		// WebKit returns null on unsupported types
		if ((new DOMParser()).parseFromString("", "text/html")) {
			// text/html parsing is natively supported
			return;
		}
	} catch (ex) {}

	proto.parseFromString = function(markup, type) {
		if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
			var
			  doc = document.implementation.createHTMLDocument("")
			;
	      		if (markup.toLowerCase().indexOf('<!doctype') > -1) {
        			doc.documentElement.innerHTML = markup;
      			}
      			else {
        			doc.body.innerHTML = markup;
      			}
			return doc;
		} else {
			return nativeParse.apply(this, arguments);
		}
	};
}(DOMParser));

DOMParser from Chrome/JSM/XPCOM/Privileged Scope

Смотрите статью по ссылке: nsIDOMParser

Спецификации

Спецификация Статус Комментарий
DOM Parsing and Serialization
Определение 'DOMParser' в этой спецификации.
Рабочий черновик Первоначальное определение

Поддержка браузерами

BCD tables only load in the browser

Смотрите также