tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
2323
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    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 FIAE's!

    Ich bin gerade dabei ein ErrorLog in mein Prog einzubauen. Nachdem ich es eingelesen habe wollte ich es erweitern.
    Mein XML Document lässt sich aber nicht einlesen.
    Ich habe schon die Hilfe durchforstet komme aber nicht weiter.

    HTML-Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Error_Messages>
    	<MessageNr1_Test_ExMessage>
    		<Exception_Message>Test_ExMessage</Exception_Message>
    		<Exception_Details>System.Exception: Test_ExMessage     at [...] .cs:line 3385</Exception_Details>
    	</MessageNr1_Test_ExMessage>
    </Error_Messages>
    Die Datei lade ich mit
    Code :
    1
    
    Document.LoadXml( AppPath+sErrorLogFile );
    Es wird immer der Fehler:
    "The data at the root level is invalid. Line 1, position 1."
    angezeigt.

    Was mache ich falsch? Fehlen angaben in der XML Datei?

    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...

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Das Xml scheint keinen Fehler zu haben. Ich kanns ohne Troubles laden ..

    Mein Code hierzu:

    Code :
    1
    2
    3
    4
    5
    
    XmlDocument doc = new XmlDocument();
    doc.Load(@"MeinPfad\test.xml");
     
    XmlNode sn = doc.SelectSingleNode("Error_Messages/MessageNr1_Test_ExMessage/Exception_Message");
                Console.WriteLine(sn.InnerText.ToString());
     

  3. #3
    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
    Danke für die schnelle Antwort!

    Ich bekomm aber immer noch den gleichen fehler auch wenn ich den XML-Head weglasse.
    "The data at the root level is invalid. Line 1, position 1."
    Ich habe mir das Exception Objekt mal ganauer angeschauet und das hier noch gefunden:
    [ErrorCode "Xml_InvalidRootData"]

    Ich verstehe leider immer noch nicht warum das jetzt abschmiert. Hast Du noch eine Idee?
    Hab ich irgend eine Namenskonvention nicht eingehalten?

    Gruss 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...

  4. #4
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Kann es sein, dass du mehr als _ein_ Root-Element hast? Wenn ja, dann ists klar. Du darfst nämlich nur ein einziges Root-Element verwenden und alle anderen Nodes müssen darunter liegen.
     

  5. #5
    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
    Es ist haar genau die gleiche XML Datei wie oben.

    Habe es jetzt anders gelöst:
    Code :
    1
    2
    3
    4
    
    Reader = new XmlTextReader( AppPath+sErrorLogFile );
    Document.Load( Reader );
    Reader.Close();
    ExceptionElement = Document.DocumentElement;
    Danach konnte ich mein XML ganz einfach erweitern und es sieht jetzt so aus:
    HTML-Code:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <Error_Messages>
    	<MessageNr1_Test_ExMessage>
    		<Exception_Message>Test_ExMessage</Exception_Message>
    		<Exception_Details>System.Exception: Test_ExMessage     [...].cs:line 3385</Exception_Details>
    	</MessageNr1_Test_ExMessage>
    	<MessageNr2_Test_ExMessage>
    		<Exception_Message>Test_ExMessage</Exception_Message>
    		<Exception_Details>System.Exception: Test_ExMessage     [...].cs:line 3385</Exception_Details>
    	</MessageNr2_Test_ExMessage>
    </Error_Messages>
    Im iExplorer wird das XML auch korrekt dargestellt.
    Wenn ich jetzt wieder versuche das XML mit
    Code :
    1
    
    Document.LoadXml( AppPath+sErrorLogFile );
    zu öffnen schmiert es wieder ab.

    Warum bin ich der einzige bei dem das nicht so einfach klappt?
    Was mach ich nur falsch?
     
    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...

  6. #6
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Ganz einfach, weil du dir mal die Methoden genauer anschauen solltest, bzw. die Beschreibung.

    Mit LoadXml ladest du reines Xml, also ein schon eingelesenes XmlDocument. Zum Beispiel:
    Code :
    1
    
    XmlDoc.LoadXml("<items><item>1</item></items>");
    Siehe: http://msdn.microsoft.com/library/de...adxmltopic.asp

    Willst Du von einem File lesen musst du Load verwenden.
     

  7. #7
    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
    Ohh, Du hast vollkommen recht!
    Ich hätte
    Code :
    1
    
    Document.Load( AppPath+sErrorLogFile );
    verwenden sollen.
    Hab mich böse vertan.

    Ich danke Dir! Und das passiert mir nicht nochmal. Ist schon das zweite mal wenn Du dich noch erinnern kannst( String.Replace ).
    Werd in Zukunft den Objektbrowser öfter ausgiebig kunsultieren.

    Gruss 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...

  8. #8
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Der Thread ist zwar schon etwas älter, aber ichhätte dazu noch an cosmochaosmaker ne Frage.

    Wie schaut dein Codeteil aus, wo du an das eingelesene XmlDocument noch Elemente dranhängst und wieder abspeicherst?

    Ich bekomme immer den Fehler:

    Eine nicht behandelte Ausnahme des Typs 'System.InvalidOperationException' ist in system.xml.dll aufgetreten.

    Zusätzliche Informationen: Das Dokument hat bereits einen DocumentElement-Knoten.


    Mein Code schaut folgendermaßen aus:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    
    XmlTextReader reader = new XmlTextReader( "InputFileName.xml" );
    reader.WhitespaceHandling = WhitespaceHandling.None;
     
    XmlDocument document = new XmlDocument();
    document.Load( reader );
    reader.Close();
     
    XmlNode newNode =
      document.CreateNode( XmlNodeType.Element, "TestElement", "" );
     
    [COLOR=Red]// Bei nachfolgender Zeile kommt der Fehler
    document.InsertAfter( newNode, document.DocumentElement );[/COLOR]
     
    document.Save( "OutputFileName.xml" );

    mfG,
    MAN
     

  9. #9
    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
    Hi!

    Du musst Dir das DocumentElement erstmal holen. Dann kannst Du beliebig viele Nodes anfügen.
    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
    36
    37
    38
    39
    40
    41
    42
    
    try { 
        Document = new XmlDocument();
     
        if ( File.Exists( Path )){
            Document.Load( Path );
            ExceptionElement = Document.DocumentElement;
        }
        else
            ExceptionElement = Document.CreateElement( "Error_Messages" );
                    
        if ( Document.HasChildNodes )
            count += ExceptionElement.ChildNodes.Count;
     
        ExLogElement = Document.CreateElement( "Exception" );
            ExLogElement.SetAttribute( "Count", DateTime.Now.ToShortDateString() );
            ExLogElement.SetAttribute( "ExType", DateTime.Now.ToShortDateString() );
            ExLogElement.SetAttribute( "Date", DateTime.Now.ToShortDateString() );
                        
        DetailsElement = Document.CreateElement( "Exception" );
        DetailsElement.InnerText = ExString;
     
        ExLogElement.AppendChild( DetailsElement );     
        ExceptionElement.AppendChild( ExLogElement );
        Document.AppendChild( ExceptionElement );
                    
        if ( !File.Exists( Path )){
            writer = new XmlTextWriter( Path, System.Text.Encoding.UTF8 );
            writer.Formatting = Formatting.Indented;
            writer.WriteStartDocument(true);
            Document.Save( writer );
        }
        else
            Document.Save( Path );
        }
        catch ( Exception ) {
            Class_ErrorMessages.Show_ErrorLogException( sErrorLogFile );
        }
        finally {
            if (writer != null){
                writer.Close();
        }
    }

    MfG cosmo
    Geändert von Christian Kusmanow (19.06.06 um 10:10 Uhr)
     
    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...

  10. #10
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Ich hatte die Frage vorher falsch formuliert. Da hab ich nicht gesagt, dass ich einem vorhandenen Dokument ein neues übergeordnetes Root-Element geben will.

    Das heißt, wie bekomme ich aus folgender Struktur, die Struktur darunter?

    Aus dem:
    Code :
    1
    2
    3
    
    <rootElement>
       <testElement></testElement>
    </rootElement>

    soll das werden:
    Code :
    1
    2
    3
    4
    5
    
    <newRootElement>
       <rootElement>
          <testElement></testElement>
       </rootElement>
    </newRootElement>

    mfG,
    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  11. #11
    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
    Was soll daran so schwer sein?

    Du erstellst ein neues Element und legst das vorhandene Element darin ab.
    Bsp.:
    Code :
    1
    2
    3
    
    XmlElement NewRootElement = XmlDocument.CreateElement("newRootElement");
    NewRootElement.AppentChild( rootElement );
    XmlDocument.AppendChild( NewRootElement );

    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...

  12. #12
    Avatar von MAN
    MAN MAN ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Beiträge
    426
    Ok, klingt einfach.

    Schreib mir mal ein kleinen Code-Teil, wo du aus einer Datei die erste Struktur ausließt und dann in die zweite Struktur bringst.

    Wenn du das hinbekommst, dann bin ich auf die Lösung gespannt, wie du es machen würdest!

    Ich habe es mitlerweile mit nem Kollegen herausgefunden.

    mfG,
    MAN
     
    BLT - Die Bundesliga Tabelle der Saison 2011 / 2012 - http://www.spacehoster.de/blt/ NEU: mit Tippspiel!
    EMail: mstangel@gmx.de

  13. #13
    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
    Hi!

    Ich war krank.

    Ich denke mal das es nicht anders ausehen würde als wie Du und dein Kollege es herausgefunden habt.
    Wenn Du meinen letzten Post mit meinem vorletzten in deinem Kopf zusammen schmeißt, hast Du deine Antwort. Ist wirklich leicht!

    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...

Ähnliche Themen

  1. Problem mit DVD-Laufwerk - Lesefehler
    Von Nepheus im Forum Hardware
    Antworten: 1
    Letzter Beitrag: 20.11.06, 21:21
  2. XMLDocument darstellen
    Von dila71 im Forum .NET Windows Forms
    Antworten: 1
    Letzter Beitrag: 07.12.05, 10:57
  3. XMLDocument
    Von MD1978 im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 29.12.04, 17:24
  4. [WinXP] Lesefehler überspringen
    Von Mark im Forum Microsoft Windows
    Antworten: 1
    Letzter Beitrag: 14.09.04, 02:25
  5. photoshop 7.0 lesefehler
    Von en2k im Forum Photoshop
    Antworten: 9
    Letzter Beitrag: 16.12.02, 14:08