RSS XML File mit PHP erzeugen

Kahmoon

Erfahrenes Mitglied
Hi beisammen,

ist das erste mal das ich sowas versuche....also bitte um um Nachsicht.

Ich schaffe es soweit das XML file zu erzeugen.....aber ein RSS Feed braucht folgenden Knoten
Code:
<rss version="0.91"></rss>
. Leider kriege ich diese Informationen nicht in das XML Dokument. Bei "=" oder "" bringt er mir Fehler.

Das XML Dokument erzeuge ich mit folgendem PHP Code
PHP:
#XML erzeugen
$dom = new DOMDocument("1.0", "UTF-8");
$rss = $dom->appendChild(new DOMElement('channel'));
$titel = $rss->appendChild(new DOMElement("titel", "root54.de - Dein Bikerportal"));
$description = $rss->appendChild(new DOMElement("description", "Dein Bikerportal. Hier findest Du Files, News, Artikel, Tips, Messebereichte und vieles mehr."));
$link = $rss->appendChild(new DOMElement("link", "http://www.root54.de"));
$language = $rss->appendChild(new DOMElement("language", "de-de"));	

while($data = mysql_fetch_array($result)){
	$item = $rss->appendChild(new DOMELement("item"));
	
	$titel = $item->appendChild(new DOMElement("titel", htmlspecialchars(utf8_encode($data["titel"]))));	
	
	$link = format_mod_rewrite($data["titel"]);
	$link = htmlentities(utf8_encode($link));
	$link = BASEURL."viewblog/".$data["id"]."/".$link.".html";
	$mrwrite = $item->appendChild(new DOMElement("link", $link));	
	
}

echo $dom->saveXML();

Kann mir wer verraten wie ich das erforderliche XML dort reinbekomme? Also das rss version="" vor channel.

Hier liegt das bisherige File übrigens http://root54.de/content/xml/rss.php

Gruß
Franky
 
Zuletzt bearbeitet:
also so funktionierts shconmal. setAttribute wars

PHP:
#XML erzeugen
$dom = new DOMDocument("1.0", "UTF-8");
$rss = $dom->appendChild(new DOMElement('rss'));
$rss->setAttribute("version", "0.91");
$channel = $rss->appendChild(new DOMElement('channel'));
$titel = $channel->appendChild(new DOMElement("titel", "root54.de"));
$description = $channel->appendChild(new DOMElement("description", "Dein Bikerportal."));
$link = $channel->appendChild(new DOMElement("link", "http://www.root54.de"));
$language = $channel->appendChild(new DOMElement("language", "de-de"));

leider die Ausgabe noch nicht ganz.....aber zumindest erkennt der Reader jetzt ein RSS
 
Danke. Habs inzwischen gelöst.....nur weiß ich nicht was ich gegen das Sonderzeichen mache...

Bisherige Lösung
PHP:
$doc = new DOMDocument('1.0');
// we want a nice output
$doc->formatOutput = true;

$rss = $doc->createElement('rss');
$rss = $doc->appendChild($rss);
$rss->setAttribute("version", "0.91");

$channel = $doc->createElement('channel');
$channel = $rss->appendChild($channel);

$title = $doc->createElement('title');
$title = $channel->appendChild($title);

$text = $doc->createTextNode('root54.de - Dein Bikerportal');
$text = $title->appendChild($text);

$description = $doc->createElement('description');
$description = $channel->appendChild($description);

$text = $doc->createTextNode('Dein Bikerportal. Hier findest Du Files, News, Artikel, Tips, Messebereichte und vieles mehr');
$text = $description->appendChild($text);

$link = $doc->createElement('link');
$link = $channel->appendChild($link);

$text = $doc->createTextNode('http://www.root54.de');
$text = $link->appendChild($text);
		
		
while($data = mysql_fetch_array($result)){
	$item = $doc->createElement('item');
	$item = $channel->appendChild($item);
	
	$titel = $doc->createElement('title');
	$titel = $item->appendChild($titel);

	$text = $doc->createTextNode(utf8_encode($data["titel"]));
	$text = $titel->appendChild($text);		
	
	$link = $doc->createElement('link');
	$link = $item->appendChild($link);
	
	$url = format_mod_rewrite($data["titel"]);
	$url = htmlentities(utf8_encode($url));
	$url = "http://www.root54.de/viewblog/".$data["id"]."/".$url.".html";

	$text = $doc->createTextNode($url);
	$text = $link->appendChild($text);		

	
	$description = $doc->createElement('description');
	$description = $item->appendChild($description);

	$text = $doc->createTextNode(utf8_encode($data["teaser"]));
	$text = $description->appendChild($text);	
	
}
 
Du solltest auch die verwendete Zeichenkodierung angeben (sowohl im HTTP-Header als auch in der XML-Deklaration).
 
ich setze den Header bereits, hatte ich hier nur nicht gepostet.

Ich setze folgenden Header
PHP:
header("Content-type: application/xml");

und habe jetzt zusätzlich noch angefügt
PHP:
$doc = new DOMDocument('1.0', 'iso-8859-15');

jetzt gibts wieder ne andre Fehlermeldung
 
Aber du vergisst die Zeichenkodierung (in diesem Fall genauer gesagt den Zeichensatz, von dem aus auf die Kodierung geschlossen wird):
PHP:
header("Content-type: application/xml; charset=is0-8859-15");
 
Zurück