Javascript で DOM をシリアル化し、整形式の XML ドキュメントを取得したいのですが、meta
タグが閉じられていません:
<html>
<head>
<meta name="keywords" content="test">
</head>
<body>
<p>test
<pre id='x'/>
</body>
<script>
document.getElementById('x').appendChild(
document.createTextNode(new XMLSerializer().serializeToString(document))
);
</script>
</html>
出力に無効な XML が含まれており、ここmeta
で は閉じられていません。ただしp
、閉鎖されています:
<html>
<head>
<meta name="keywords" content="test">
</head>
<body>
<p>test</p>
</body>
</html>
Chrome 30.0 と Phantomjs 1.9.2 での同じ動作。
XMLSerializer
HTML 入力が壊れていても、から整形式の XML 出力を期待しています。これが起こらない理由と回避策は何ですか? DOM をテキストとして XML に変換する必要があります。