XML Dateien mit simplexml erweitern

  • Hallo Leute,
    habe hier noch ein Problem. Ich speichere alle Daten nur noch im XML Format, da das sehr praktisch ist. Wenn ich eine XML Datei um neue Daten erweitern wollte, habe ich einfach folgendes gemacht:

    Code
    // XML Datei öffnen und Anzahl der Elemente auslesen
    $xml = simplexml_load_file("demo.xml");
    $xml2count = count($xml->children())
    // Neuen Eintrag erstellen
    $xml->Eintrag[$xml2count + 1] = "Test";
    // Speichern und Beenden
    $xml->asXML("demo.xml");
    header("Location: irgendwohin.php");
    exit;

    Auf meinem lokalen Server meldet dieses Script eine Fehlermeldung die man aber mit

    Code
    error_reporting(0)

    unterdrücken. Doch es funktioniert trotz Fehlermeldung trotzdem.
    Nun habe ich meine Datei auf einem Server im Internet liegen, auf dem dies (also das Speichern) nicht mehr funktioniert.

    Könnt ihr mir pls helfen?
    thx,
    imakroy

  • also das ist die fehlermeldung die mein lokaler server produziert:

    Code
    Warning: main() [function.main]: Cannot add element Eintrag number 5 when only 4 such elements exist in C:\Lokaler Server\htdocs\XYZDEV\Flugzeugreservierung\modules\Reservieren\erstellentun.php on line 31
    
    
    Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "../../config/Bestatigungsmail.xml" in C:\Lokaler Server\htdocs\XYZDEV\Flugzeugreservierung\modules\Reservieren\erstellentun.php on line 50
    
    
    Warning: Cannot modify header information - headers already sent by (output started at C:\Lokaler Server\htdocs\XYZDEV\Flugzeugreservierung\modules\Reservieren\erstellentun.php:31) in C:\Lokaler Server\htdocs\XYZDEV\Flugzeugreservierung\modules\Reservieren\erstellentun.php on line 71

    und diese fehlermeldung meldet der server im internet:

    Code
    Warning: simplexml_load_file() [function.simplexml-load-file]: I/O warning : failed to load external entity "../../config/Bestatigungsmail.xml" in /home/htdocs/web201/html/xtest/Flugzeugreservierung/modules/Reservieren/erstellentun.php on line 50
    
    
    Warning: Cannot modify header information - headers already sent by (output started at /home/htdocs/web201/html/xtest/Flugzeugreservierung/modules/Reservieren/erstellentun.php:50) in /home/htdocs/web201/html/xtest/Flugzeugreservierung/modules/Reservieren/erstellentun.php on line 71


    noch so ne frage nebenbei, was ist ein I/O warning?

  • Hi,
    machst du vor dem header("Location:") zufällig in output started at /home/htdocs/web201/html/xtest/Flugzeugreservierung/modules/Reservieren/erstellentun.php Zeile 50 noch eine Ausgabe ? - Die Funktion verkraftet das nämlich nicht unbedingt.
    (Fehlermeldung: headers already sent )

    Edit: beim I/O Fehler musst du vermutlich nochmal überprüfen , ob die Datei im korrekten Pfad vorhanden ist, bzw. genug rechte zum lesen und schreiben vorhanden sind.

    Sämtlicher Code erhebt keinen Anspruch auf syntaktische Korrektheit geschweige denn Ausführbarkeit und ist für die Implementation außerhalb der Beispiele nicht geeignet.
    [Blockierte Grafik: http://www.snippr.de/social/img/logo.png]
    Kein Support für kommerzielle Scripts | Kein kostenloser Support via ICQ

  • Ganz einfach: Die Ausgabe davor ist die Fehlermeldung ;)
    I/O bedeutet "Input/Output" = "Eingabe/Ausgabe"

    Zitat

    Cannot add element Eintrag number 5 when only 4 such elements exist....


    Verwende $xml->addChild('Eintrag','Test') statt $xml->Eintrag[$xml2count + 1] = "Test"; (hoffe es klappt so, ich verwende lieber DomXML statt simpleXML.

    Zitat

    I/O warning : failed to load external entity...


    Schätze mal dass der Pfad oder die Rechte nicht stimmen,. oder dass das XML-File nicht Well-Formed ist.

    Something big is coming. And there will be pirates and ninjas and unicorns...

  • jo vielen dank dodo, jetzt funktionnierts.
    und das mit dem I/O fehler ist meine schuld, da es sich um einen tippfehler handelt.

    trotzdem nochmals thx an alle!

  • eines will ich dir noch mitgeben ;)

    auch wenn man eine fehlermeldung unterdrücken kann....
    sie ist und bleibt eine fehlermeldung.
    Sie meldet einen Fehler.
    Und wenn man die Meldung unterdrückt bleibt der Fehler.
    Egal ob das script funkt oder nicht.
    manchmal kommt es nur auf kleinigkeiten an.

    Berücksichtige IMMER JEDEN fehler.
    Ich habe zB immer error_report(E_ALL) angeschalten, damit mir alle MEldungen gezeigt werden und meine scripts perfekt laufen.

    Something big is coming. And there will be pirates and ninjas and unicorns...