XML mit DOM

Alles, was PHP betrifft, kann hier besprochen werden.

XML mit DOM

Postby ThomasBauer » 11. June 2006 13:07

Ich habe hier ein etwas seltsames Verhalten beim Abspeichern eines geänderten DOMDocuments:
Code: Select all
   global $fileNews;

   // Variablen definieren
   $Zeit = strftime("%d.%m.%y",time());
   $Ablauf = $_REQUEST['AblaufDatum'];
   $Titel = $_REQUEST['titel'];
   $Text = $_REQUEST['nachrichttext'];

// neue Nachricht definieren
$xmlNews = <<< XML
<nachrichten>
   <nachricht id="99">
      <datum>$Zeit</datum>
      <ablaufdatum>$Ablauf</ablaufdatum>
      <titel>$Titel</titel>
      <text>$Text</text>
   </nachricht>
</nachrichten>
XML;

   $newNachrichten = DOMDocument::loadXML($xmlNews);
   $xpath = new DOMXPath($newNachrichten);
   $query = $xpath->query("//nachricht");
   foreach($query as $node)
       $import = $node->cloneNode(true);

   $docNachrichten = DOMDocument::load($fileNews);
   $onewxml = $docNachrichten->importNode($import, true);
   $firstNode = $docNachrichten->getElementsByTagName("nachricht");
   $docNachrichten->documentElement->insertBefore($onewxml, $firstNode->item(0));
   $docNachrichten->save($fileNews);

Die Daten werden nicht in der Datei $fileNews gespeichert. Die Datei $fileNews behält ihren ursprünglichen Inhalt. Wenn ich Daten aber in eine andere Datei ($fileNews."N") speichere, werden meine Änderungen übernommen.

Ich wollte nun die Daten zuerst in einer neuen Datei speichern und dann die neue Datei kopieren. Dabei stellte ich fest, dass ich die ursprüngliche Datei nicht mit unlink löschen kann. Es kommt zwar keine Fehlermeldung, aber die Datei bleibt nach unlink weiterhin bestehen.

Kann sich jemand dieses Verhalten erklären?
ThomasBauer
 
Posts: 25
Joined: 08. November 2005 16:34

Postby KingCrunch » 12. June 2006 01:51

Welches OS?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Re: XML mit DOM

Postby Knight1 » 12. June 2006 05:42

ThomasBauer wrote:Ich wollte nun die Daten zuerst in einer neuen Datei speichern und dann die neue Datei kopieren. Dabei stellte ich fest, dass ich die ursprüngliche Datei nicht mit unlink löschen kann. Es kommt zwar keine Fehlermeldung, aber die Datei bleibt nach unlink weiterhin bestehen.

Kann sich jemand dieses Verhalten erklären?


Kommt drauf an auf welchem Betriebssystem das ganze läuft.

Wenn es auf Linux läuft dann überprüfe mal die Rechte.
Diese sollten mindestens auf 755 stehen.
Ändern kannst Du die Rechte sowohl in der Linux-Shell als auch in PHP mit dem Befehl chmod.

Wenn das ganze unter Windows läuft dann weiß ich nciht was das sein kann. Bei Mac genauso.


Kai aka Knight1
Image
User avatar
Knight1
 
Posts: 310
Joined: 18. October 2003 10:03
Location: Trier
Operating System: Windows 7 Ultimate x64

Postby ThomasBauer » 15. June 2006 09:39

Das ganze läuft unter Windows. Deshalb kann ich es mit auch nicht erklären, da die Dateien dort alle schreibbar sind - habe Readonly schon gecheckt.
ThomasBauer
 
Posts: 25
Joined: 08. November 2005 16:34

Postby ThomasBauer » 29. June 2006 10:42

Hallo,
hat jemand eine Idee, woran das liegen könnte? Blockiert der Befehl DOMDocument::loadXML vielleicht die Datei, so dass ich nicht mehr schreiben kann? Wenn ja, wie bekomme ich diese Blockade wieder weg?
ThomasBauer
 
Posts: 25
Joined: 08. November 2005 16:34

Postby ThomasBauer » 17. July 2006 06:30

Habe den Fehler gefunden!

In meiner HTML-Datei (deren Code ich nicht gepostet hatte, da ich dort keinen Fehler vermutete) rufe ich die oben genannte Funktion zum Speichern auf. Dabei gebe ich aber die Daten von $docNachrichten nicht an meine aufrufende Datei weiter. Durch einen Fehler in der Logik wird in der HTML-Datei jedoch nochmals eine Funktion (eine andere) zum Speichern der Daten aufgerufen. Da diese Funktion mit den unveränderten Daten arbeitet, hat es den Eindruck gehabt, dass die oben aufgeführte Funktion nicht arbeitet. Sie tut dies, jedoch werden die Daten sofort wieder mit den alten überschrieben.
ThomasBauer
 
Posts: 25
Joined: 08. November 2005 16:34


Return to PHP

Who is online

Users browsing this forum: No registered users and 14 guests