tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
3
ZUGRIFFE
481
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    
    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 :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    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
     

  2. #2
    Avatar von rd4eva
    rd4eva rd4eva ist offline Mitglied Brillant
    Registriert seit
    Feb 2003
    Beiträge
    756
    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 :
    1
    
    if(RoomName ==" " || ControllerName ==" " || ConfigPath ==" " || RoomName =="" || ControllerName =="" || ConfigPath =="")
    String.Trim
    String.IsNullOrEmpty
    String.IsNullOrWhiteSpace
     
    In order to understand recursion, one must first understand recursion.

  3. #3
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Ja kann ich auch machen....

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    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
     

  4. #4
    Blue_Fox Blue_Fox ist offline Mitglied Bronze
    Registriert seit
    Aug 2011
    Beiträge
    32
    Neue Entdeckung!!

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

    so loesche ich mein xml

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

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

Ähnliche Themen

  1. XmlDocument in TreeView anzeigen und ändern
    Von Tikonteroga im Forum .NET Windows Forms
    Antworten: 0
    Letzter Beitrag: 03.08.11, 21:14
  2. WPF TreeView an XMLDocument binden
    Von accelle im Forum .NET WPF & Silverlight
    Antworten: 1
    Letzter Beitrag: 08.08.08, 12:11
  3. XMLDocument darstellen
    Von dila71 im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 07.12.05, 10:57
  4. XMLDocument lesefehler
    Von Christian Kusmanow im Forum .NET Archiv
    Antworten: 12
    Letzter Beitrag: 21.01.05, 16:33
  5. XMLDocument
    Von MD1978 im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 29.12.04, 17:24

Stichworte