XML mit PHP4.x einlesen und ausgeben.

dwex

Erfahrenes Mitglied
Hallo Leute,

ich habe wieder einmal ein Problem - wo mir die Suche und auch die Tutorials nicht weiterhelfen können.

Ich habe ein XML-File welche so aussieht (Auszug):
PHP:
<?xml version="1.0" encoding="ISO-8859-1" ?> 
  <!DOCTYPE productExport (View Source for full doctype...)> 
- <productExport>
- <product itemtype="angebot" itemnumber="Ang2005-05-19_1" hot="9">
- <title>
- <![CDATA[ Nokia 2600 oder Siemens A65 mit Power SMS Vertrag
  ]]> 
  </title>
- <description>
- <![CDATA[ 
<b>Das eteleon Sparangebot:</b><br>
<ul>
<li>Nokia 2600 oder Siemens A65 kostenlos!</li>
<li>1200 Frei-SMS kostenlos!</li>
<li>24 Monate keine Grundgebühr und kein Mindestumsatz!</li>
<li>D1-Netz!</li>
</ul>

  ]]> 
  </description>
  <price currencyCode="EUR" amount="0" exponent="2" /> 
  <image path="http://files.eteleon.de/angebot/Ang2005-05-19_1/info.gif" width="190" height="110" /> 
  </product>
- <product itemtype="angebot" itemnumber="Ang2005-05-20_1" hot="8">
- <title>
- <![CDATA[ SonyEricsson T630 mit Power SMS Vertrag
  ]]> 
  </title>
- <description>
- <![CDATA[ 
<b>Das eteleon Sparangebot:</b><br>
<ul>
<li>SonyEricsson T630</li>
<li>1200 Frei-SMS kostenlos!</li>
<li>24 Monate keine Grundgebühr und kein Mindestumsatz!</li>
<li>D1-Netz!</li>
</ul>

  ]]> 
  </description>
  <price currencyCode="EUR" amount="3900" exponent="2" /> 
  <image path="http://files.eteleon.de/angebot/Ang2005-05-20_1/info.gif" width="190" height="110" /> 
  </product>
- <product itemtype="angebot" itemnumber="Ang2005-05-20_2" hot="7">
- <title>
- <![CDATA[ Nokia 6230i + MMC-Karte mit Vodafone Vertrag
  ]]> 
  </title>
- <description>
- <![CDATA[ 
<b>Noch besser: Der Nachfolger des "Besten Handys der Welt"*:</b>
<ul>
<li>Nokia 6230i</li>
<li>1,3 Megapixel Kamera</li>
<li>Zusätzliche MMC-Speicherkarte</li>
<li>ab 0,00 Euro monatliche Grundgebühr</li>
<li>original Vodafone Tarif zur Auswahl</li>
</ul>
<small>*laut Connect-Test</small>

  ]]> 
  </description>
  <price currencyCode="EUR" amount="0" exponent="2" /> 
  <image path="http://files.eteleon.de/angebot/Ang2005-05-20_2/info.gif" width="190" height="110" /> 
  </product>
- <product itemtype="angebot" itemnumber="Ang2005-05-03_2" hot="6">
- <title>
- <![CDATA[ Motorola RAZR V3 + Nokia 2650 mit o2 Genion Partne
  ]]> 
  </title>
es handelt sch dabei um handyangebote.

Wie bringe ich jetzt die Angebote in meine Website - ich habe absolut keine Ahnung wie das gehen soll.

Vielen Dank für eure Hilfe und ein paar Codeschnippsel im Voraus.
 
Hiho, ich hab dir mal meinen ersten Versuch, mit XML zu arbeiten hingeschrieben. Keine Kommentare, aber die Schlüsselstellen solltest du schon finden :D
PHP:
<?php

echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
  <title>Mein erster RSS-NewsFeedReader</title>
  <style type=\"text/css\">
    body          { font-family: Tahoma,Verdana,HelevictiaVerdana; fotn-size: 12pt; background-color: #edeeee; }
	table         { border-style: solid; border-width: 1px; border-color: #000000; border-collapse: collapse; }
	tr            { border-style: none; }
	td            { border-bottom-style: solid; border-bottom-width: 1px;}
	td a:link     { color: #565555; text_decoration: none; }
	td a:visited  { color: #565555; text_decoration: none; }
	td a:hover    { color: #ABAAAA; text_decoration: underline; }
	td a:active   { color: #565555; text_decoration: none; }
  </style>
 </head>
 <body>";

$file = "news.xml";
/*$maxold = 60 * 60;
echo "Letze Abfrage ist ".gmdate("H:i:s", time()-filectime($file))." Stunden her! Nächste Abfrage in ".gmdate("i:s", $maxold-(time()-filectime($file)))." Minuten<br><br>";
if (filectime($file) < time() - $maxold) {*/
echo "Newsticker wählen:
<form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">
	<select name=\"ticker\">
		<option value=\"http://www.heise.de/newsticker/heise.rdf\">heise.de</option>
		<option value=\"http://www.pcgames.de/extimages/rss/pcgfeed.xml\">PC Games</option>
	</select>
	<input type=\"submit\" value=\"submit\">
</form>";
if (!isset($_POST['ticker'])) {
    $filenet = file("http://www.heise.de/newsticker/heise.rdf");
} else {
	$filenet = file($_POST['ticker']);
}

$fp = fopen($file,"w+");
foreach ($filenet as $filezeile) {
	fwrite($fp,$filezeile);
}
fclose($fp);

if (file_exists($file)) {
    $xml = simplexml_load_file($file);
	if ($xml) {
		if ($xml->channel->title == "heise online news") {
			echo "<table><tr><td>Titel</td><td>Link</td></tr>\r\n";
			foreach ($xml->item as $item) {
				echo "<tr><td>".htmlentities($item->title,ENT_COMPAT,"UTF-8")."</td><td><a href=\"".$item->link."\">".$item->link."</a></td></tr>\r\n";
			}
			echo "</table>";
		} else {
			if ($xml->channel->image) {
			    echo "<img src=\"".$xml->channel->image->url."\" alt=\"".$xml->channel->image->title."\">";
			}
			echo "<table><tr><td>Titel</td><td>Link</td></tr>\r\n";
			foreach ($xml->channel->item as $item) {
				echo "<tr><td>".htmlentities($item->title,ENT_COMPAT,"UTF-8")."</td><td><a href=\"".$item->link."\">".$item->link."</a></td></tr>\r\n";
			}
			echo "</table>";
		}
	}
} else {
	echo "Die Datei \"".$file."\" konnte nicht gefunden werden";
}
?>
mfg
 
Hallo,

vielen Dank für deinen Code - leider ist der aber PHP5 - ich habe nur PHP 4.

Kann mir denn jemand helfen - ich stehe hier total auf dem Schlauch.

Die XML-Datei welche ich oben gepostet habe wird über den dolgenden Link aufgerufen:
http://www.eteleon.de/partner/downloads/xml.php?itemtype=angebot
Diese ist also eigentlich ein PHP-File ()

Was ich machen möchte ist folgendes:

Ich möchte in meine Website die Handyangebote von Eteleon einbauen das ganze soll in einer Tabelle ablaufen.
Ich hab auch schon bei den Tutorials geschaut - leider finde ich da nur welche wie ich XML-Dateien erstelle nicht jedoch wie man sie ausliest.

Ich wäre euch sehr dankbar für ein paar Denkansätze (vielleicht auch ein paar Codeschnippsel) und vielleicht habt ihr ja doch irgendwo ein Tutorial für mich.

Vielen Dank im Voraus!
 
Zurück