mozilla
Your Search Results

    DOMParser

    DOMParser を用いると、文字列で格納された XML / HTML / SVG のソースを 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 の場合は XMLDocumenttext/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 未実装ブラウザへの対応

    Eli Grey 氏の次の Polyfill 、 "DOMParser HTML extension" を用いる事により、 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
    	  DOMParser_proto = DOMParser.prototype
    	, real_parseFromString = DOMParser_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) {}
     
    	DOMParser_proto.parseFromString = function(markup, type) {
    		if (/^\s*text\/html\s*(?:;|$)/i.test(type)) {
    			var
    			  doc = document.implementation.createHTMLDocument("")
    			;
     
    			doc.body.innerHTML = markup;
    			return doc;
    		} else {
    			return real_parseFromString.apply(this, arguments);
    		}
    	};
    }(DOMParser));

    ブラウザ実装状況

    機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
    XML のサポート (有) (有) (有) (有) (有)
    SVG のサポート ? 10.0 (10.0) ? ? ?
    HTML のサポート ? 12.0 (12.0) ? ? ?
    機能 Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
    XML のサポート (有) (有) ? (有) ?
    SVG のサポート ? 10.0 (10.0) ? ? ?
    HTML のサポート ? 12.0 (12.0) ? ? ?

    関連情報

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

    Contributors to this page: PWeilbacher, ethertank, Electrolysis
    最終更新者: ethertank,