これは実験段階の機能です。
この機能は複数のブラウザーで開発中の状態にあります。互換性テーブルをチェックしてください。また、実験段階の機能の構文と挙動は、仕様変更に伴い各ブラウザーの将来のバージョンで変更になる可能性があることに注意してください。
DOMParser を用いると、文字列で格納された XML / HTML のソースを document DOM オブジェクトにパースすることができます。 DOMParser は DOM 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 の場合は XMLDocument 、 image/svg+xml の場合は SVGDocument 、text/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) | ? | ? | ? |

