Dirk Herwig: XML und Array

Beitrag lesen

Hallo,

ich erhalte per Ajax vom Webservice ein XML-Objekt vom Typ IXMLDOMDocument2 (ASP.NET / AJAX / IE7). Dieses XML-Objekt wird folgendermaßen gespeichert:

var objekt = new Gui.Xml();

function _LoadXmlFromWebService() {
    HoleXML.HoleLayouts(_GetDataOk, _GetError, _GetTimeOut);
}
function _GetDataOk(value) {
    objekt._setXmlData(value);
}

_setXmlData: function(value) {
        this._xmldata = value;
}

Für die weitere Bearbeitung möchte ich eine Möglichkeit schaffen, dass alle Änderungen wieder rückgangig gemacht werden können. Dazu habe ich ein Array angelegt, welches immer den Stand des XML-Objekts vor der Bearbeitung speichern soll. Ich schreibe mit Push() this._xmldata in das Array.

this._arrBack = new Array();            // Rückgängig
this._tempArr = new Object();        //Temporäres Objekt

_pushToBackArray: function() {
        this._tempArr = this._xmldata;
        //alert(typeof (this._xmldata)); //IXMLDOMDocument2
        this._arrBack.push(this._tempArr);
}

Danach lösche ich einen Knoten aus dem this._xmldata Objekt. Das funktioniert alles auch soweit ganz gut.

Hier das Löschen:

this._pushToBackArray();
if (index > -1) {
        this._xmldata.getElementsByTagName("controls")[0].removeChild(this._xmldata.getElementsByTagName("control")[index]);
}

Jedoch stelle ich fest, dass dieser gelöschte Knoten dann auch im Array this.arrBack fehlt. Somit ist es mir dann nicht möglich, den alten Zustand wieder herzustellen. Ich erhalte immer den gleichen Zustand aus dem Array wie in dem this._xmldata Objekt.

_popToBackArray: function() {
    if (this._arrBack.length > 0) {
        this._xmldata = this._arrBack.pop();
    }
}

Wie kann ich mein Problem lösen? Ich weiß an dieser Stelle nicht mehr weiter. Ich habe extra für Push() noch ein Objekt für die Kopie des this._xmldata Objekts angelegt, in welchem ich dieses Objekt zwischenspeichere (this._tempArr).

mfg

Dirk