Daten mittels PHP in XML schreiben und bearbeiten
Melzmann
- php
0 dedlfix
Hallo Community,
ich bin gerade dabei ein kleines Newsscript zu erstellen was sich jedoch nicht einer Datenbank sondern einer xml datei als Speicherort bedient. Da ich leider noch nicht allzuviel erfahrung mit PHP in verbindung mit XML Dokumenten habe, brauche ich an dieser Stelle eure Hilfe!
Bissher habe ich es hinbekommen eine XML Dokument mittels PHP auszulesen und formatiert auszugeben!
Der Code hierführ sieht folgendermaßen aus:
<?php
$xml_filename="test.xml";
$xml_parser_handle = xml_parser_create();
$arr_start=array(
"NEWS" => "<table bordercolor='#000000' bgcolor='#00FFFF'>",
"ITEM" => "<tr><td>",
"TITLE" => "",
"CONTENT" => "<tr><td>",
"DATE" => "<tr><td>",
"AUTHOR" => "<tr><td style='border-bottom: 1px solid black'>"
);
$arr_end=array(
"NEWS" => "</table>",
"ITEM" => "</tr>",
"TITLE" => "</td>",
"CONTENT" => "</tr></td>",
"DATE" => "</tr></td>",
"AUTHOR" => "</tr></td>"
);
function zeigeDaten($parser, $data)
{
echo $data;
}
xml_set_character_data_handler($xml_parser_handle, "zeigeDaten");
function startTag($parser, $name, $attrs)
{
global $arr_start;
if($arr_start[$name])
{
echo $arr_start[$name];
}
else
{
echo "<$name><br>";
}
}
function endTag($parser, $name)
{
global $arr_end;
if($arr_end[$name])
{
echo $arr_end[$name];
}
else
{
echo "</$name><br>";
}
}
xml_set_element_handler($xml_parser_handle, "startTag", "endTag");
if (!($parse_handle = fopen($xml_filename, 'r'))) {
die("FEHLER: Datei $xml_filename nicht gefunden.");
}
while ($xml_data = fread($parse_handle, 4096))
{
if (!xml_parse($xml_parser_handle, $xml_data, feof($parse_handle)))
{
die(sprintf('XML error: %s at line %d',
xml_error_string(xml_get_error_code($xml_parser_handle)),
xml_get_current_line_number($xml_parser_handle)));
}
}
if ($xml_parser_handle == TRUE)
{
echo "Alles ok Meister!";
}
else
{
echo "da Stimmt was nich!";
}
xml_parser_free($xml_parser_handle);
?>
ich möchte nun dieses script so erweitern, das ich mittels Formular neue Daten eingeben kann, die dann z.B. beim Drücken eines "Submit" Buttons automatisch an die bestehenden Daten des XML Dokumentes angefügt werden.
Wie muss ich nun vorgehen ? Stundenlanges Googeln hat mir nicht wirklich weiter geholfen.
P.s. Das Script muss auf PHP 4.x.x. laufen, von daher fällt Simple XML schon mal flach.
Mfg,
Melzmann
echo $begrüßung;
ich möchte nun dieses script so erweitern, das ich mittels Formular neue Daten eingeben kann, die dann z.B. beim Drücken eines "Submit" Buttons automatisch an die bestehenden Daten des XML Dokumentes angefügt werden.
Wie muss ich nun vorgehen ?
P.s. Das Script muss auf PHP 4.x.x. laufen, von daher fällt Simple XML schon mal flach.
Es gibt auch Bibliotheken, die unter PHP4 laufen und XML schreiben können (beispielsweise in PEAR).
XML ist erstmal nur aneinandergehängter Text. Einfügen und Löschen aus Text (ebenso Text-Dateien) geht nur, wenn die nachfolgenden Teile nach hinten geschoben werden bzw. nach vorn. Dies ist ein recht mühsames Unterfangen, besonders dann, wenn man vorher noch die Position suchen muss, an der die Änderung vorgenommen werden soll.
Einfacher ist es in dem Fall, die gesamten Daten in eine geeignete Struktur (z.B. ein Array) einzulesen, die sich im Allgmeinen auch besser bearbeiten lässt, was das Hinzufügen und Löschen von Teilen betrifft. Was am Ende noch in der Struktur enthalten ist wird nun Eintrag für Eintrag gelesen und in die Ausgabedatei geschrieben.
Wenn es dir nicht auf XML als universelles, auch mit unregelmäßigen Datenstrukturen zurechtkommendes Datenaustauschformat ankommt, hättest du meiner Meinung nach mit dem CSV-Format weniger Aufwand.
echo "$verabschiedung $name";