XML Dateien erweitern und editieren?

Gwave

Mitglied
Hallo alle zusammen.

Ich weiss dass ich jetzt wieder so eine Frage stelle die eigentlich eh klar sein müsste. Doch ich mach mich fast schon wahnsinnig bei der Fehlersuche.

Situation:
Ich möchte eine Seite mit Eintägen sogenante Echos. Diese Seite soll über den Browser (also mittels php) editierbar sein. Echos hinzufügen und echos bearbeiten oder löschen. Diese Echos sollen in einer xml Datei abgelegt werden.

Problem:
Es läuft einfach nicht.
Parse error: syntax error, unexpected $end in /home/www/web140/html/xml/echos.php on line 59

Hier der Code:
Ich probiere hier einfach mal den code für das anfügen eines neuen Datensatzes oben im xml File:
PHP:
<?php 
$text  = "Jupeeee  es hat funktioniert!! Das is en Datesatz wo mit PHP igfüegt hät..   Juhuuuu..    :-)"; 
$author = "Dave"; 
$datum   = "26.5.2006"; 

$doc = DOMDocument::load("echos.xml"); 

$xp = new domxpath($doc); 

$id = 0; 
foreach ($doc->documentElement->childNodes as $articles) { 
    if ($articles->nodeType == 1 && $articles->nodeName == "echo") { 
        $id++; 
    } 
} 

$id++; 
$newxml = <<< XML
<echo> 
    <id>$id</id> 
    <text>$text
    </text> 
    <author>$author</author>
    <datum>$datum</datum> 
</echo> 
XML; 

$doc2 = DOMDocument::loadXML($newxml); 
$xpath = new DOMXPath($doc2); 

$query = $xpath->query("/echo"); 

foreach($query as $node) { 
 $import = $node->cloneNode(true); 
} 

$onewxml = $doc->importNode($import, true); 

$firstNode = $doc->getElementsByTagName("echo"); 

$doc->documentElement->insertBefore($onewxml, $firstNode->item(0)); 
$doc->save("echos.xml"); 
?>

Der Wurm liegt anscheinend an der Stelle in der ich die $newxml Variable definiere. Doch ich komm einfach nicht weiter.

Danke für die Hilfe,
Gwave
 
Hi Gumbo,
danke für den Tipp.

Gumbo hat gesagt.:
Die so genannte Heredoc-Syntax ist falsch.


Leider kann ich doch nichts falsched daran finden.
PHP:
$newxml = <<< XML 
<echo>  
    <id>$id</id>  
    <text>$text 
    </text>  
    <author>$author</author> 
    <datum>$datum</datum>  
</echo>  
XML;
Das sollte doch richtig sein mit: <<<
Auch ohne Leerzeichen nach den Eckklammern komm ich nicht weiter.

Ich währe froh wenn du ein Tipp genauer definieren könntest.
 
Also bei mir funktioniert es mit der richtigen Syntax:
PHP:
$newxml = <<<XML
<echo>
    <id>$id</id>
    <text>$text
    </text>
    <author>$author</author>
    <datum>$datum</datum>
</echo>
XML;
 
Das Leerzeichen muss da auf jeden Fall weg.
...aaaber....
Gwave hat gesagt.:
Parse error: syntax error, unexpected $end in /home/www/web140/html/xml/echos.php on line 59
Was befindet sich denn in Zeile 59? Dein Code enthält keine 59 Zeilen...also heraus mit dem kompletten Skript :-)
 
Hallo,

lautet die richtige Syntax nicht
PHP:
$newxml = <<<XML
    <id>$id</id>
    <text>$text
    </text>
    <author>$author</author>
    <datum>$datum</datum>
XML;
(ohne echo)

MfG Tabuk
 
Das „echo“ ist in diesem Fall eine XML-Elementdeklaration und ist damit berechtigt.
Du musst übrigens noch darauf achten, dass in der Zeile des Endes der Heredoc-Syntax nichts anderes als das Schlussbezeichner und das Semikolon steht. Lies dir einfach noch mal die Informationen zur Heredoc-Syntax genau durch.
 
Zurück