これは実験段階の機能です。
この機能は複数のブラウザーで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザーの将来のバージョンで変更になる可能性があることに注意してください。

DOMParser を用いると、文字列で格納された XML / HTML のソースを document DOM オブジェクトにパースすることができます。 DOMParserDOM Parsing and Serialization で定義されています。

XMLHttpRequest は URL アドレスに指定可能な情報からの XML や HTML のパースをサポートしています。

DOMParser の生成

DOMParser オブジェクトの生成は、単純に new DOMParser() を使用します。

Firefox の拡張機能での DOMParser の作成方法の詳細については 『nsIDOMParser』 をご覧下さい。

XML のパース

パーサーオブジェクトを作成すると、parseFromString メソッドを用いて 文字列から XML をパースすることができます。<

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

エラーのハンドリング

現在は、パース処理に失敗した場合、DOMParser は例外をスローせず、代わりにエラー文書を返すという点に注意して下さい (※参照: バグ 45566)

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

パースエラーはエラーコンソール にもエラーの発生した文書の URI (※後述) とともに表示されます。

SVG および HTML 文書のパース

DOMParser は SVG 文書のパース (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7)、そして HTML 文書のパース (Firefox 12.0 / Thunderbird 12.0 / SeaMonkey 2.9) にも用いることができます。指定された MIME type によって動作は異なります。MIME type が text/xml の場合は XMLDocumentimage/svg+xml の場合は SVGDocumenttext/html の場合は HTMLDocument が返されます。

var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
// SVGDocument でも HTMLDocument でもなく、Document が返る

parser = new DOMParser();
doc = parser.parseFromString(stringContainingXMLSource, "image/svg+xml");
// SVGDocument (Document) が返る

parser = new DOMParser();
doc = parser.parseFromString(stringContainingHTMLSource, "text/html");
// HTMLDocument (Document) が返る

DOMParser 未実装ブラウザーへの対応

/*
 * 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));

Chrome/JSM/XPCOM/Privileged スコープの DOMParser

nsIDOMParser をご覧ください。

仕様

仕様書 策定状況 コメント
DOM Parsing and Serialization
DOMParser の定義
草案 初期定義

ブラウザー実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
XML のサポート 1 (有) 1.0 (1.7 or earlier) 9 8 3.2
SVG のサポート 4 (有) 10.0 (10.0) 10 15 3.2
HTML のサポート 30 (有) 12.0 (12.0) 10 17 7.1
機能 Android Edge Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
XML のサポート (有) (有) (有) ? (有) ?
SVG のサポート ? (有) 10.0 (10.0) ? ? ?
HTML のサポート ? (有) 12.0 (12.0) ? ? ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: yyss, ethertank, PWeilbacher, Electrolysis
 最終更新者: yyss,