mw22
01-13-2004, 11:53 PM
function maak(strXML){
var objDOMParser = new DOMParser();
var objDoc = objDOMParser.parseFromString('<xml>'+strXML+'</xml>', "text/xml");
while (this.hasChildNodes()) this.removeChild(this.lastChild);
var objImportedNode;
for (var i=0; i < objDoc.childNodes[0].childNodes.length; i++) {
switch (objDoc.childNodes[0].childNodes[i].nodeType){
case 3: objImportedNode = document.createTextNode(objDoc.childNodes[0].childNodes[i].data);
break;
default:
objImportedNode = document.importNode(objDoc.childNodes[0].childNodes[i], true);break;
}
this.appendChild(objImportedNode);
} //End: for
}
function getXML() {
var objXMLSerializer = new XMLSerializer();
var temp=this.childNodes.length-1;
var strXML='';
for (var i=0;i==temp;i++){
switch (this.childNodes[i].nodeType){
case 3: strXML+=this.childNodes[i].data.replace(/</g,'<').replace(/>/g,'>');
break;
default: strXML+=objXMLSerializer.serializeToString(this.childNodes[i]);
break;
}
}
return strXML;
}
Node.prototype.__defineGetter__("innerXML", getXML);
Node.prototype.__defineSetter__("innerXML", maak);
I've made these functions quite some time ago, and quite possibly this code is quite ugly, but it works. :)
Obviously this would be only useful if you are a masochistic xhtml-coder and you want an easy way (kind of contradictory with a masochist) to dynamically add or remove markup/text.
I needed it for Simon Willison's syntax highlighting experiment:
http://home.hccnet.nl/m.wargers/test/mozilla/syntaxHighlight.xml
var objDOMParser = new DOMParser();
var objDoc = objDOMParser.parseFromString('<xml>'+strXML+'</xml>', "text/xml");
while (this.hasChildNodes()) this.removeChild(this.lastChild);
var objImportedNode;
for (var i=0; i < objDoc.childNodes[0].childNodes.length; i++) {
switch (objDoc.childNodes[0].childNodes[i].nodeType){
case 3: objImportedNode = document.createTextNode(objDoc.childNodes[0].childNodes[i].data);
break;
default:
objImportedNode = document.importNode(objDoc.childNodes[0].childNodes[i], true);break;
}
this.appendChild(objImportedNode);
} //End: for
}
function getXML() {
var objXMLSerializer = new XMLSerializer();
var temp=this.childNodes.length-1;
var strXML='';
for (var i=0;i==temp;i++){
switch (this.childNodes[i].nodeType){
case 3: strXML+=this.childNodes[i].data.replace(/</g,'<').replace(/>/g,'>');
break;
default: strXML+=objXMLSerializer.serializeToString(this.childNodes[i]);
break;
}
}
return strXML;
}
Node.prototype.__defineGetter__("innerXML", getXML);
Node.prototype.__defineSetter__("innerXML", maak);
I've made these functions quite some time ago, and quite possibly this code is quite ugly, but it works. :)
Obviously this would be only useful if you are a masochistic xhtml-coder and you want an easy way (kind of contradictory with a masochist) to dynamically add or remove markup/text.
I needed it for Simon Willison's syntax highlighting experiment:
http://home.hccnet.nl/m.wargers/test/mozilla/syntaxHighlight.xml