DOMParser と XMLSerializer
DOMParser
は覚えてるけどXMLSerializer
をしょっちゅう忘れちゃうのでメモ。
var parser, serializer; var input, output; var dom; input = '<div id="test"><p>hogehoge</p></div>'; parser = new DOMParser(); try { dom = parser.parseFromString(input, "text/html").getElementById("test"); }catch(e){ dom = parser.parseFromString(input, "application/xml").documentElement; } document.body.appendChild(document.adoptNode(dom)); serializer = new XMLSerializer(); output = serializer.serializeToString(document.getElementById("test")); input === output; //==> true // IEやFxはxmlns属性が付いてfalseが返ることが稀によくある
XMLSerializer
はDOM標準ではないっぽいけどinnerHTML
よりはマシでしょ…。
速度的には、innerHTML
を参照するのに比べてseliarizeToString
を使うと3〜10倍くらい*1高速化します。
*1:ブラウザによる