DOMParser
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨Ð¸ÑÐ»Ñ 2015 г.â©.
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 Firefox bug 45566):
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
(ÐпиÑание оÑибки)
<sourcetext>(оÑÑÑвок XML докÑменÑа)</sourcetext>
</parsererror>
ÐÑибки ÑинÑакÑиÑеÑкого анализа Ñакже ÑообÑаÑÑÑÑ Ð² конÑÐ¾Ð»Ñ Ð¾Ñибок, Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑом URI докÑменÑа (Ñм. Ðиже) в каÑеÑÑве иÑÑоÑника оÑибки.
Ð Ð°Ð·Ð±Ð¾Ñ SVG или HTML
DOMParser Ñак же Ð¼Ð¾Ð¶ÐµÑ Ð±ÑÑÑ Ð¸ÑполÑзован Ð´Ð»Ñ ÑазбоÑа SVG докÑменÑа Gecko 10.0 или HTML докÑменÑа Gecko 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
СпеÑиÑикаÑии
| Specification |
|---|
| HTML > # dom-parsing-and-serialization > |