From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- files/ru/web/api/domparser/index.html | 230 ++++++++++++++++++++++++++++++++++ 1 file changed, 230 insertions(+) create mode 100644 files/ru/web/api/domparser/index.html (limited to 'files/ru/web/api/domparser/index.html') diff --git a/files/ru/web/api/domparser/index.html b/files/ru/web/api/domparser/index.html new file mode 100644 index 0000000000..a23e5cb58e --- /dev/null +++ b/files/ru/web/api/domparser/index.html @@ -0,0 +1,230 @@ +--- +title: DOMParser +slug: Web/API/DOMParser +tags: + - API + - DOM + - XML + - Экспериментальное +translation_of: Web/API/DOMParser +--- +

{{APIRef("DOM")}}{{SeeCompatTable}}

+ +

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 {{Bug(45566)}}):

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

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

+ +

Разбор SVG или HTML

+ +

DOMParser так же может быть использован для разбора SVG документа {{geckoRelease("10.0")}} или HTML документа {{geckoRelease("12.0")}}. На выходе возможны 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

+ +

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

+ + + + + + + + + + + + + + + + +
СпецификацияСтатусКомментарий
{{SpecName('DOM Parsing', '#the-domparser-interface', 'DOMParser')}}{{Spec2('DOM Parsing')}}Первоначальное определение
+ +

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

+ +
{{CompatibilityTable}}
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureChromeEdgeFirefox (Gecko)Internet ExplorerOperaSafari (WebKit)
XML support{{CompatChrome(1)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(1)}}{{CompatIE(9)}}{{CompatOpera(8)}}{{CompatSafari(3.2)}}
SVG support{{CompatChrome(4)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(10.0)}}{{CompatIE(10)}}{{CompatOpera(15)}}{{CompatSafari(3.2)}}
HTML support{{CompatChrome(30)}}{{CompatVersionUnknown}}{{CompatGeckoDesktop(12.0)}}{{CompatIE(10)}}{{CompatOpera(17)}}{{CompatSafari(7.1)}}
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FeatureAndroidEdgeFirefox Mobile (Gecko)IE MobileOpera MobileSafari Mobile
XML support{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatUnknown}}
SVG support{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(10.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
HTML support{{CompatUnknown}}{{CompatVersionUnknown}}{{CompatGeckoMobile(12.0)}}{{CompatUnknown}}{{CompatUnknown}}{{CompatUnknown}}
+
+ +

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

+ + -- cgit v1.2.3-54-g00ecf