aboutsummaryrefslogtreecommitdiff
path: root/files/zh-cn/web/api/domparser
diff options
context:
space:
mode:
authorPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
committerPeter Bengtsson <mail@peterbe.com>2020-12-08 14:40:17 -0500
commit33058f2b292b3a581333bdfb21b8f671898c5060 (patch)
tree51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/api/domparser
parent8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff)
downloadtranslated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2
translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip
initial commit
Diffstat (limited to 'files/zh-cn/web/api/domparser')
-rw-r--r--files/zh-cn/web/api/domparser/domparser/index.html18
-rw-r--r--files/zh-cn/web/api/domparser/index.html203
2 files changed, 221 insertions, 0 deletions
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
+---
+<p><strong><code>DOMParser()</code></strong> 构造函数新建一个 <code><a href="/en-US/docs/Web/API/DOMParser">DOMParser</a></code> 对象实例。</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="brush: js">var parser = new DOMParser();</pre>
+
+<h3 id="参数">参数</h3>
+
+<p>无.</p>
+
+<h3 id="返回值">返回值</h3>
+
+<p>一个新建的<code><a href="/en-US/docs/Web/API/DOMParser">DOMParser</a></code> 对象实例,可以通过这个对象的 <code>parseFromString()</code> 方法将字符串解析为 DOM 对象.</p>
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
+---
+<div>{{APIRef("DOM")}}</div>
+
+<p><strong><code>DOMParser</code></strong> 可以将存储在字符串中的 {{Glossary("XML")}} 或 {{Glossary("HTML")}} 源代码解析为一个 DOM {{domxref("Document")}}。</p>
+
+<div class="note">
+<p><strong>注意:</strong>{{domxref("XMLHttpRequest")}} 支持从URL可寻址资源解析XML和HTML,在其{{domxref("XMLHttpRequest.response", "response")}} 属性中返回<code>Document</code>。</p>
+</div>
+
+<p>你可以使用{{domxref("XMLSerializer")}} 接口执行相反的操作 - 将DOM树转换为XML或HTML源。</p>
+
+<p>对于HTML文档,您还可以通过设置 {{domxref("Element.innerHTML")}} 和{{domxref("Element.outerHTML", "outerHTML")}} 属性的值,将部分 DOM 替换为从HTML构建的新 DOM 树。还可以读取这些属性以获取对应于相应 DOM 子树的 HTML 片段。</p>
+
+<h2 id="语法">语法</h2>
+
+<pre class="brush: js">let <em>domparser </em>= new DOMParser()​​;</pre>
+
+<h2 class="brush: js" id="方法">方法</h2>
+
+<p>{{domxref("DOMParser.parseFromString()")}}</p>
+
+<h3 id="语法_2">语法</h3>
+
+<pre class="brush: js"><em>let </em><strong>doc</strong><em><strong> </strong>= domparser.</em>parseFromString(<em>string</em>, <em>mimeType</em>)</pre>
+
+<h3 id="返回值">返回值</h3>
+
+<p>基于 <strong><code><a href="#Argument02">mimeType</a></code></strong> 参数,返回 {{domxref("Document")}} 或 {{domxref("XMLDocument")}} 或其他文档类型。</p>
+
+<h3 id="参数">参数</h3>
+
+<p>该方法接收 2 个必要参数:</p>
+
+<dl>
+ <dt><code>string</code></dt>
+ <dd>要解析的 {{domxref("DOMString")}}。它必须包含 {{Glossary("HTML")}}、{{Glossary("xml")}}、{{Glossary("xhtml+xml")}} 或 {{Glossary("svg")}} 文档。</dd>
+ <dt><a id="Argument02"></a></dt>
+ <dt><code>mimeType</code></dt>
+</dl>
+
+<dl>
+ <dd>一个 {{domxref("DOMString")}}。This string determines a class of the the method's return value. The possible values are the following:</dd>
+</dl>
+
+<table class="standard-table" style="max-width: 50%;">
+ <thead>
+ <tr>
+ <th scope="col"><code>mimeType</code></th>
+ <th scope="col">doc.constructor</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td><code>text/html</code></td>
+ <td><code>{{domxref("Document")}}</code></td>
+ </tr>
+ <tr>
+ <td><code>text/xml</code></td>
+ <td><code>{{domxref("XMLDocument")}}</code></td>
+ </tr>
+ <tr>
+ <td><code>application/xml</code></td>
+ <td><code>{{domxref("XMLDocument")}}</code></td>
+ </tr>
+ <tr>
+ <td><code>application/xhtml+xml</code></td>
+ <td><code>{{domxref("XMLDocument")}}</code></td>
+ </tr>
+ <tr>
+ <td><code>image/svg+xml</code></td>
+ <td><code>{{domxref("XMLDocument")}}</code></td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="解析_XML">解析 XML</h2>
+
+<p>一旦建立了一个解析对象以后,你就可以使用它的 <code>parseFromString</code> 方法来解析一个 XML 字符串:</p>
+
+<pre class="brush: js">let parser = new DOMParser(),
+ doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
+</pre>
+
+<h4 id="错误处理">错误处理</h4>
+
+<p>如果解析失败, <code>DOMParser</code> 不会抛出任何异常,而是会返回一个给定的错误文档:</p>
+
+<pre class="brush:xml">&lt;parsererror xmlns="http://www.mozilla.org/newlayout/xml/parsererror.xml"&gt;
+(error description)
+&lt;sourcetext&gt;(a snippet of the source XML)&lt;/sourcetext&gt;
+&lt;/parsererror&gt;
+</pre>
+
+<p>解析错误会显示在<a href="../../../zh-cn/Error_Console">错误控制台</a>,包括文档的地址和错误的源代码。</p>
+
+<h2 id="解析_SVG_或者_HTML_文档">解析 SVG 或者 HTML 文档</h2>
+
+<p><code>DOMParser</code> 也可以用来解析 SVG 文档 {{geckoRelease("10.0")}} 或者 HTML 文档 {{geckoRelease("12.0")}}。根据给定的 MIME 类型不同,<code>parseFromString</code> 方法可能返回三种不同类型的文档。如果MIME类型是 <code>text/xml</code>,则返回一个 <code>XMLDocument</code>,如果 MIME 类型是 <code>text/svg+xml</code>,则返回一个 <code>SVGDocument</code>,如果MIME类型是 <code>text/html</code>,则返回一个 <code>HTMLDocument</code>。</p>
+
+<pre class="brush: js">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 对象。
+</pre>
+
+<h2 id="DOMParser_HTML_扩展">DOMParser HTML 扩展</h2>
+
+<pre class="brush: js">/*
+ * 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('&lt;!doctype') &gt; -1) {
+ doc.documentElement.innerHTML = markup;
+ }
+ else {
+ doc.body.innerHTML = markup;
+ }
+ return doc;
+ } else {
+ return nativeParse.apply(this, arguments);
+ }
+ };
+}(DOMParser));</pre>
+
+<h2 id="规范">规范</h2>
+
+<table class="standard-table">
+ <thead>
+ <tr>
+ <th scope="col">规范</th>
+ <th scope="col">状态</th>
+ <th scope="col">备注</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>{{SpecName('DOM Parsing', '#the-domparser-interface', 'DOMParser')}}</td>
+ <td>{{Spec2('DOM Parsing')}}</td>
+ <td>Initial definition</td>
+ </tr>
+ </tbody>
+</table>
+
+<h2 id="浏览器兼容性">浏览器兼容性</h2>
+
+
+
+<p>{{Compat("api.DOMParser", 3)}}</p>
+
+<h2 id="参见">参见</h2>
+
+<ul>
+ <li><a href="/en-US/docs/Parsing_and_serializing_XML">Parsing and serializing XML</a></li>
+ <li>{{domxref("XMLHttpRequest")}}</li>
+ <li>{{domxref("XMLSerializer")}}</li>
+ <li>{{jsxref("JSON.parse()")}} - counterpart for {{jsxref("JSON")}} documents.</li>
+</ul>