MDN’s new design is in Beta! A sneak peek: https://blog.mozilla.org/opendesign/mdns-new-design-beta/

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

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 の定義
草案 初期定義

ブラウザー実装状況

機能 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,