XMLDocument Load loeschen

Blue_Fox

Mitglied
Hi

und schon wieder ein problem...

und zwar folgendes:
In meiner Anwendung lade ich aus einer XML einen Pfad fuer ein zweites XML, aus dem ich meine ganzen Konfigurationen lade.
Wenn dieses zweite xml nicht existiert, wird nachgefragt wo es zur zeit liegt, dann wird die erste XML abgeaendert und es faengt von vorne an...

Jetzt hab ich aber folgendes Problem:

da ich in meinem code die Load("..."); methode verwendet habe, aendert er er zwar den Pfad in der ersten XML, aber im Programm hat er immer noch den Alten Pfad, da anscheinend ein wiederholtes Laden mit Load("...") nicht zu einem neuen laden fuehr!!

Kann ich den Speicher irgendwie zerstoeren**** damit er mir die abgeaenderte XML laedt****

Hier wird die erste XML geladen und bei erfolg in einer Liste abgelegt
Code:
public bool GetfromRegXML(List<ControllerRegistry> ContrReg){
			XmlDocument Registry = new XmlDocument();
			try{
				Registry.Load("Registry.xml");
				// Choose the right node
				XmlNodeList RegNodes = Registry.SelectNodes("/Registry/Controller");
				// Create first Listobject
				ControllerRegistry R = new ControllerRegistry();
				bool Return = false;
				foreach(XmlNode RegNode in RegNodes){
					string RoomName = RegNode.Attributes["RoomName"].InnerXml;
					string ControllerName = RegNode.Attributes["ControllerName"].InnerXml;
					string ConfigPath = RegNode.Attributes["ConfigPath"].InnerXml;
					string ControllerIP = RegNode.Attributes["ControllerIP"].InnerXml;
					if(RoomName ==" " || ControllerName ==" " || ConfigPath ==" " || RoomName =="" || ControllerName =="" || ConfigPath ==""){
						Registry = null;
						Return = false;
					}
					else{
						// Set all Registryinformation
						R.SetRoomName(RoomName);
						R.SetConfigPath(ConfigPath);
						R.SetControllerIP(ControllerIP);
						R.SetControllerName(ControllerName);
						ContrReg.Add(R);
						Return = true;
					}
				}
				return Return;
			}
			catch(FileNotFoundException){
				Registry = null;
				return false;
			}
		}
Hier erstell ich mein erstes XML neu
Code:
public void CreateNewRegXML(string ControllerName, string ControllerIP, string RoomName, string ConfigPath){
			// Create a new XML-File
			XmlTextWriter CreateXML = new XmlTextWriter("Registry.xml",null);
			CreateXML.WriteStartDocument();
			CreateXML.WriteStartElement("Registry");
			CreateXML.WriteStartElement("Controller");
			CreateXML.WriteAttributeString("ControllerName", "", ControllerName);
			CreateXML.WriteAttributeString("ControllerIP", "", ControllerIP);
			CreateXML.WriteAttributeString("RoomName", "", RoomName);
			CreateXML.WriteAttributeString("ConfigPath", "", ConfigPath);
			CreateXML.WriteEndElement();
			CreateXML.WriteEndDocument();
			CreateXML.Close();
		}
mfg
Blue_Fox
 
da anscheinend ein wiederholtes Laden mit Load("...") nicht zu einem neuen laden fuehr!!
Ich weiß es zwar nicht wirklich, aber das bezweifle ich doch sehr.

Ich würde eher vermuten das du irgendwo einen Fehler hast.
So richtig blicke ich da aber nicht durch. Vielleicht kannst du den Code nochmal aufs wesentliche reduzieren.

P.s.
Code:
if(RoomName ==" " || ControllerName ==" " || ConfigPath ==" " || RoomName =="" || ControllerName =="" || ConfigPath =="")
String.Trim
String.IsNullOrEmpty
String.IsNullOrWhiteSpace
 
Ja kann ich auch machen....

Code:
public bool GetfromRegXML(List<ControllerRegistry> ContrReg){
            XmlDocument Registry = new XmlDocument();
            try{
                Registry.Load("Registry.xml");
                // hier wird es verarbeitet..... *fast unwichtig*
                XmlNodeList RegNodes = Registry.SelectNodes("/Registry/Controller");
                // Create first Listobject
                .....
                }
             catch(FileNotFoundException){
                Registry = null;          // ein Versuch von mir es ungueltig zu machen
            }

Das ist eigentlich alles um was es geht :) das naechste mal schreib ich nur noch das wichtigste *sorry* , das waere aber hier nur die Zeile: Registry.Load("Registry.xml");

Also zur Erklaerung:

ich lade Das Registry XML aus immer dem Gleichen pfad, geh auf einen bestimmten Knoten im XML und schreibe dann alle Attribute in eine Liste....

Wie kann ich jetzt das laden rueckgaengig machen, dass beim naechsten durchlauf evtl ein abgeaendertes Registry geladen wird?

mfg

Blue Fox
 
Neue Entdeckung!!

wenn ich das Registry.xml vor dem 2. Durchlauf loesche, kann er es trotzdem laden!!? :eek: :( :eek: :( Den stroert das gar nicht, dass es weg ist...

so loesche ich mein xml

Code:
System.IO.File.Delete("Registry.xml");

und es ist wirklich vor dem 2. Durchlauf von der platte verschwunden!! *hab da extra 2 mal geschaut*
 
Zurück