MDN wants to talk to developers like you: https://qsurvey.mozilla.com/s3/8d22564490d8

DOMParser

Перевод не завершен. Пожалуйста, помогите перевести эту статью с английского.

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

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

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

Создание DOMParser

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

Для большей информации о создании DOMParser iв расширениях 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>

The parsing errors are also reported to the Error Console, with the document URI (see below) as the source of the error.

Разбор 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' в этой спецификации.
Рабочий черновик Первоначальное определение

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

Feature Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
XML support 1 (Да) 1.0 (1.7 или ранее) 9 8 3.2
SVG support 4 (Да) 10.0 (10.0) 10 15 3.2
HTML support 30 (Да) 12.0 (12.0) 10 17 7.1
Feature Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
XML support (Да) (Да) (Да) ? (Да) ?
SVG support ? (Да) 10.0 (10.0) ? ? ?
HTML support ? (Да) 12.0 (12.0) ? ? ?

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

Метки документа и участники

 Внесли вклад в эту страницу: t1gor, Ihewaz
 Обновлялась последний раз: t1gor,