function has_attribute(tag){ var regex =/([a-zA-Z0-9_\.]+)\[@([a-zA-Z0-9_\.]+)\]/; return regex.exec(tag);}function has_attribute_and_value(tag){ var regex = /([a-zA-Z0-9_\.]+)\[@([a-zA-Z0-9_\.]+)=([a-zA-Z0-9_\.]+)\]/; return regex.exec(tag);}function save_data(path, data){ var tags = path.split('/'); var current = document.getElementById('xml'); if (tags.length > 0) { for (i in tags) { if (x = has_attribute_and_value(tags[i])) { var all = current.getElementsByTagName(x[1]); var cont = false; if (all) { for (var i = 0; i != all.length; ++i) { if (all[i].hasAttribute(x[2]) && all[i].getAttribute(x[2]) == x[3]) { current = all[i]; cont = true; } } } if (!cont) return false; } // a[@x] else if (x = has_attribute(tags[i])) { var all = current.getElementsByTagName(x[1]); if (all) { current = all[0]; current.setAttribute(x[2], data); return true; } return false; } // a/ else { var all = current.getElementsByTagName(tags[i]); if (all) current = all[0]; else return false; } // als het de laatste is! if (i == tags.length - 1 && current) { // verwijder eerst alles var children = current.childNodes; for (x in children) { if (children.item(x) != null) current.removeChild(children.item(x)); } current.appendChild(document.createTextNode(data)); } } }}function loadxml(){ var root = document.getElementById('inputs'); var inputs = root.getElementsByTagName('input'); for (var i = 0; i != inputs.length; ++i) { var x = inputs.item(i); save_data(x.getAttribute('path'), x.value); } document.getElementById('debug').value = document.getElementById('xml').innerHTML;}