XMLSerializer で選択範囲の DOM ツリーを文字列化

DocumentFragment (以下 df)内のノードの文字列を取得したいとき、df には innerHTML がないので
今までは適当な要素を作ってそれに df を appendChild してから innerHTML で取得していたけど、
Parsing and serializing XML - MDC
を読んで「DOM ツリーを文字列にシリアライズする」というやつがあったので試してみた。

var sl = window.getSelection();//Selection オブジェクト
var ra = sl.getRangeAt(0);//Range オブジェクト
var df = ra.cloneContents();//df オブジェクト
var xs = new XMLSerializer();//XMLSerializer オブジェクトを生成
var str = xs.serializeToString(df);//df 内のノードの文字列を取得
console.log(str);//結果。選択範囲の DOM の文字列
//一行にするとこうなる。長い。
(new XMLSerializer).serializeToString(window.getSelection().getRangeAt(0).cloneContents());

document.body とか通常の要素に serializeToString を使用すると
outerHTML 相当の(つまり body 要素も入った)文字列が返ってきた。
歌劇にも XMLSerializer あった。
いちおうアップ。