Хотел предложить XMLSerializer, но оказалось что в хроме он выдает html при сериализации dom-элементов html-документа. Вот не пойму баг это или нет, потому как в FireFox и Opera все работает как надо.
<div><input type='radio' name='radiobutton1' value='page' checked='checked'/></div>
<script>
var div = document.querySelector('div');
alert(div.innerHTML);
var serializer = new XMLSerializer();
var children = div.childNodes;
var innerXML = '';
for (var i = 0; i < children.length; i++) {
innerXML += serializer.serializeToString( children[i] );
}
alert(innerXML);
</script>