node.attributes can give attributes that can't be set back on the element. Infact setAttribute will throw error when it encounters such an attribute.
Consider following html. Note, and extra " at the end of src attribute value.
<img id="img" src="img.png" />
Now, lets try getting the attributes of this node.
document.getElementById('img').attributes
It will give three attributes, the last one being '"'. Lets try prefixing every attribute value with '_';
var img = document.getElementById('img'),
attributes = img.attributes;
for (var i = 0; i < attributes.length; i++) {
img.setAttribute(attributes[i].name, '_' + attributes[i].value)
}