From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/domparser/domparser/index.html | 18 ++ files/zh-cn/web/api/domparser/index.html | 203 +++++++++++++++++++++ 2 files changed, 221 insertions(+) create mode 100644 files/zh-cn/web/api/domparser/domparser/index.html create mode 100644 files/zh-cn/web/api/domparser/index.html (limited to 'files/zh-cn/web/api/domparser') diff --git a/files/zh-cn/web/api/domparser/domparser/index.html b/files/zh-cn/web/api/domparser/domparser/index.html new file mode 100644 index 0000000000..f57a39617a --- /dev/null +++ b/files/zh-cn/web/api/domparser/domparser/index.html @@ -0,0 +1,18 @@ +--- +title: DOMParser() +slug: Web/API/DOMParser/DOMParser +translation_of: Web/API/DOMParser/DOMParser +--- +

DOMParser() 构造函数新建一个 DOMParser 对象实例。

+ +

语法

+ +
var parser = new DOMParser();
+ +

参数

+ +

无.

+ +

返回值

+ +

一个新建的DOMParser 对象实例,可以通过这个对象的 parseFromString() 方法将字符串解析为 DOM 对象.

diff --git a/files/zh-cn/web/api/domparser/index.html b/files/zh-cn/web/api/domparser/index.html new file mode 100644 index 0000000000..6185aa0581 --- /dev/null +++ b/files/zh-cn/web/api/domparser/index.html @@ -0,0 +1,203 @@ +--- +title: DOMParser +slug: Web/API/DOMParser +tags: + - API + - DOM + - DOM Parsing + - Document + - XML + - 参考 +translation_of: Web/API/DOMParser +--- +
{{APIRef("DOM")}}
+ +

DOMParser 可以将存储在字符串中的 {{Glossary("XML")}} 或 {{Glossary("HTML")}} 源代码解析为一个 DOM {{domxref("Document")}}。

+ +
+

注意:{{domxref("XMLHttpRequest")}} 支持从URL可寻址资源解析XML和HTML,在其{{domxref("XMLHttpRequest.response", "response")}} 属性中返回Document

+
+ +

你可以使用{{domxref("XMLSerializer")}} 接口执行相反的操作 - 将DOM树转换为XML或HTML源。

+ +

对于HTML文档,您还可以通过设置 {{domxref("Element.innerHTML")}} 和{{domxref("Element.outerHTML", "outerHTML")}} 属性的值,将部分 DOM 替换为从HTML构建的新 DOM 树。还可以读取这些属性以获取对应于相应 DOM 子树的 HTML 片段。

+ +

语法

+ +
let domparser = new DOMParser()​​;
+ +

方法

+ +

{{domxref("DOMParser.parseFromString()")}}

+ +

语法

+ +
let doc = domparser.parseFromString(string, mimeType)
+ +

返回值

+ +

基于 mimeType 参数,返回 {{domxref("Document")}} 或 {{domxref("XMLDocument")}} 或其他文档类型。

+ +

参数

+ +

该方法接收 2 个必要参数:

+ +
+
string
+
要解析的 {{domxref("DOMString")}}。它必须包含 {{Glossary("HTML")}}、{{Glossary("xml")}}、{{Glossary("xhtml+xml")}} 或 {{Glossary("svg")}} 文档。
+
+
mimeType
+
+ +
+
一个 {{domxref("DOMString")}}。This string determines a class of the the method's return value. The possible values are the following:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
mimeTypedoc.constructor
text/html{{domxref("Document")}}
text/xml{{domxref("XMLDocument")}}
application/xml{{domxref("XMLDocument")}}
application/xhtml+xml{{domxref("XMLDocument")}}
image/svg+xml{{domxref("XMLDocument")}}
+ +

解析 XML

+ +

一旦建立了一个解析对象以后,你就可以使用它的 parseFromString 方法来解析一个 XML 字符串:

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

错误处理

+ +

如果解析失败, DOMParser 不会抛出任何异常,而是会返回一个给定的错误文档:

+ +
<parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml">
+(error description)
+<sourcetext>(a snippet of the source XML)</sourcetext>
+</parsererror>
+
+ +

解析错误会显示在错误控制台,包括文档的地址和错误的源代码。

+ +

解析 SVG 或者 HTML 文档

+ +

DOMParser 也可以用来解析 SVG 文档 {{geckoRelease("10.0")}} 或者 HTML 文档 {{geckoRelease("12.0")}}。根据给定的 MIME 类型不同,parseFromString 方法可能返回三种不同类型的文档。如果MIME类型是 text/xml,则返回一个 XMLDocument,如果 MIME 类型是 text/svg+xml,则返回一个 SVGDocument,如果MIME类型是 text/html,则返回一个 HTMLDocument

+ +
let parser = new DOMParser();
+let 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.
+ * NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
+ */
+
+/*! @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));
+ +

规范

+ + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('DOM Parsing', '#the-domparser-interface', 'DOMParser')}}{{Spec2('DOM Parsing')}}Initial definition
+ +

浏览器兼容性

+ + + +

{{Compat("api.DOMParser", 3)}}

+ +

参见

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