これは実験的な機能です。本番で使用する前にブラウザー実装状況をチェックしてください。

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

ブラウザー実装状況

現在、互換性データを可読形式の JSON フォーマットに置き換えているところです。 この互換性一覧は古い形式を使っており、これに含まれるデータの置き換えが済んでいません。 手助けしていただける場合は、こちらから!

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