tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
350
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    vanilla vanilla ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    21
    Hi

    Ich nutze die XmlDocument-Klasse und habe eine Projekt-Datei mit einer Größe von derzeit 14kb.

    Angezeigt werden die Daten in einem TreeView.

    Das Lesen ist kein Problem und geht auch in einer akzeptablen Geschwindigkeit.

    Beim Schreiben der Knoten (Attribute, InnerText) oder beim Anlegen neuer Knoten und deren Attributen steigt die CPU-Last auf 100% und der Rechner benötigt einige Minuten für den Vorgang.

    Das Kuriose ist, wenn ich das Projekt speichere und das Programm neu starte, geht das Erstellen wieder schnell, verlangsamt sich dann aber zusehends mit jedem weiteren neuen Knoten.

    Woran kann das liegen?
    Ist die Datei schon jetzt zu gross um sie im Speicher zu lassen und zu bearbeiten?


    mfg
     

  2. #2
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Hallo vanilla!

    Also dein Problem ist das beim schreiben des XML's alles langsamer wird?
    Wenn ja, mit was und wie erstellst Du denn das XML?
    Der XmlTextWriter zB schreibt ungecached in das XML. Sollte also nicht daran liegen.
    Mehr Details würden echt mehr aussagen.

    Btw. wenn Du den TreeView füllst, solltest Du dir mal den Hinweis
    in diesem Repaint unterdrücken - Thread anschaun.

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  3. #3
    vanilla vanilla ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    21
    Hi

    Danke für Deine schnelle Antwort.

    Ich bin nicht gerade der Type der gut erklären kann, also fragt bitte falls Unklarheiten bestehen...

    Problem
    Also mein Problem sind wirklich nur die Schreibzugriffe auf die XML-Struktur.
    Lesen ist kein Problem ( der TreeView war hier nur als leichte "Projekterklärung" angeführt).

    Einen neuen Knoten erstelle ich z.B. mit folgender Funktion:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    void myDATA_ST_Project::m_ActiveDisplay_linkedAction_Condition_New(XmlNode* __xnCondition)
        XmlElement* __xeTemp;
        XmlAttribute* __xaTemp;
     
        XmlElement* __xeCondition = this->v_xmlProject->CreateElement("ad_act_linked_action_condition");
        __xaTemp = this->v_xmlProject->CreateAttribute("conditionID");
        __xaTemp->Value = "none";
        __xeCondition->Attributes->Append(__xaTemp);
        __xaTemp = this->v_xmlProject->CreateAttribute("destinationID");
        __xaTemp->Value = "none";
        __xeCondition->Attributes->Append(__xaTemp);
                        
        __xnCondition->AppendChild(__xeCondition);
    }

    Anm.: xmlProject ist ein Object einer abgeleiteten XmlDocument-Klasse


    Bei jedem der Bibliotheksaufrufe (->CreateElement, ->CreateAttribute, ->Append) geht die CPU-Last auf 100% und es dauert minutenlang.

    Als Methode des XML-Zugriffs habe ich DOM gewählt.
    Der Vorteil ist, das XML-File im Speicher liegt.
    Ich kann also die Knoten anspringen so wie ich sie brauche, ohne jedesmal meine Datei neu lesen zu müssen.

    mfg
    Vanilla
     

  4. #4
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Ok, aber ich bin leider kein cpp Crack. Versuche aber zu helfen.
    Zitat Zitat von vanilla
    Bei jedem der Bibliotheksaufrufe (->CreateElement, ->CreateAttribute, ->Append) geht die CPU-Last auf 100% und es dauert minutenlang.
    Kann es sein das dies ein Thread - übergeifender Zugriff ist?
    Also das Du ein ein Objekt ansprichst, was von einem anderen Thread erstellt wurde?
    Ich weiss jetzt aber nicht ob sich genau so wie im .NET 1.1 (C#) verhält,
    da man dort dabei evtl. genau solche wartezeiten hat oder Du gleich eine Exception,
    wie jetzt auch im .NET 2.0 bekommst.
    Oder hast Du evtl. die Methoden CreateElement, CreateAttribute, Append überschrieben?
    Wenn ja, was passiert da?

    Ansonsten fällt mir nichts ein.
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  5. #5
    vanilla vanilla ist offline Mitglied
    Registriert seit
    Feb 2002
    Beiträge
    21
    Also die Methoden sind nicht überschrieben auch nutze ich kein Multi-Threading, also...

    Ich dachte das so ein Problem evtl. bekannt ist und schonmal jemand darüber gestolpert ist.


    Aber Danke für Deine Hilfe!
     

Ähnliche Themen

  1. [C#] XmlDocument.GetElementById() wirft immer 0 zurück
    Von Henig im Forum .NET Windows Forms
    Antworten: 8
    Letzter Beitrag: 05.08.10, 15:20
  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