DOMParser:parseFromString() 方法

parseFromString() 方法是 DOMParser 接口的一个方法,用于解析包含 HTML 或 XML 的字符串,并返回 HTMLDocumentXMLDocument

注意:Document.parseHTMLUnsafe() 静态方法提供了一种符合人体工程学的替代方法,用于将 HTML 字符串解析为 Document

语法

js
parseFromString(string, mimeType)

参数

string

要解析的字符串。它必须包含 HTMLxmlXHTMLsvg 文档。

mimeType

一个字符串。此字符串决定使用 XML 解析器还是 HTML 解析器来解析字符串。有效值为:

  • text/html
  • text/xml
  • application/xml
  • application/xhtml+xml
  • image/svg+xml

text/html 值将调用 HTML 解析器,并且该方法将返回 HTMLDocument。任何 <script> 元素都将被标记为不可执行,并且 <noscript> 的内容将被解析为标记。

其他有效值(text/xmlapplication/xmlapplication/xhtml+xmlimage/svg+xml)在功能上是等效的。它们都调用 XML 解析器,并且该方法将返回 XMLDocument

任何其他值都是无效的,并且将导致抛出 TypeError

返回值

一个 HTMLDocumentXMLDocument,具体取决于 mimeType 参数。

示例

解析 XML、SVG 和 HTML

请注意,text/html 的 MIME 类型将调用 HTML 解析器,而任何其他有效的 MIME 类型将调用 XML 解析器。下面的示例中的 application/xmlimage/svg+xml MIME 类型在功能上是相同的——后者不包含任何特定于 SVG 的解析规则。区分两者仅用于阐明代码的意图。

js
const parser = new DOMParser();

const xmlString = "<warning>Beware of the tiger</warning>";
const doc1 = parser.parseFromString(xmlString, "application/xml");
// XMLDocument

const svgString = '<circle cx="50" cy="50" r="50"/>';
const doc2 = parser.parseFromString(svgString, "image/svg+xml");
// XMLDocument

const htmlString = "<strong>Beware of the leopard</strong>";
const doc3 = parser.parseFromString(htmlString, "text/html");
// HTMLDocument

console.log(doc1.documentElement.textContent);
// "Beware of the tiger"

console.log(doc2.firstChild.tagName);
// "circle"

console.log(doc3.body.firstChild.textContent);
// "Beware of the leopard"

错误处理

当使用 XML 解析器解析不代表格式良好的 XML 的字符串时,parseFromString 返回的 XMLDocument 将包含一个 <parsererror> 节点,描述解析错误的性质。

js
const parser = new DOMParser();

const xmlString = "<warning>Beware of the missing closing tag";
const doc = parser.parseFromString(xmlString, "application/xml");
const errorNode = doc.querySelector("parsererror");
if (errorNode) {
  // parsing failed
} else {
  // parsing succeeded
}

此外,解析错误可能会报告到浏览器的 JavaScript 控制台。

规范

规范
HTML 标准
# dom-domparser-parsefromstring-dev

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅