Zum Inhalt springen

XML-Ausgabe klappt nicht.

Erstellt am 19. Oktober 2009 · 7 Antworten · letzte Antwort am 20. Oktober 2009

Tags: Frage

TheFreeman ·

Hallo zusammen.

ich bin gerade dabei, mir eine XML-Ausgabe für eine Flash-Galerie zu bauen.
Nur werden meine XML-Daten nicht ausgegeben, sondern es kommt nur eine
Fehlermeldung:

XML-Verarbeitungsfehler: Kein Element gefunden
Adresse: http://localhost/t3_extensionentwicklung/
Zeile Nr. 1, Spalte 1:

Ich denke, dass es ein ähnliches Problem ist wie hier:
#86692

Nur habe ich das wie in diesem Threat beschrieben gemacht, denk ich.
Vielleicht könnt Ihr mir da weiterhelfen?

Mein TS:

xml = PAGE
xml.typeNum = 0

# xml.10 < plugin.tx_dsmd_bakerygalerie_pi1

XML.10 = USER_INT
XML.10.userFunc = tx_dsmd_bakerygalerie_pi1->main

# XML.10 = TEXT
# XML.10.value = <hello>world</hello> 
      
xml.config {
	
	no_cache = 1 
	
	#entfernt diverse header angaben
	disableAllHeaderCode = 1
 
	#standard doctype deaktivieren
	disableCharsetHeader = 1
 
	#entfern die HTML Kommentare
	disablePrefixComment = 1
 
	#lege eigenen doctype an
	additionalHeaders = Content-Type: text/xml;charset=utf8
 
	#xml prolog anlegen
	xmlprologue = <?xml version="1.0" encoding="UTF-8" "standalone="yes"?>
}

Und meine PHP-Funktion:

function main($content,$conf)	{
		$this->conf=$conf;
		$this->pi_setPiVarDefaults();
		$this->pi_loadLL();
		$this->pi_USER_INT_obj=1;	// Configuring so caching is not expected. This value means that no cHash params are ever set. We do this, because it's a USER_INT object!

		$content .='<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
		<DATEN>';

		$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*','tx_dsmdbakerygalerie_products','1=1 '.$this->cObj->enableFields('tx_dsmdbakerygalerie_products'));
		
		while($data = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res))
		{
		
		#echo t3lib_div::debug($_SERVER['SERVER_NAME']);
	$content .='<prod>
				<uid>'.$data['uid'].'</uid>
				<pid>'.$data['pid'].'</pid>
				<name>'.$data['name'].'</name>
				<artnr>'.$data['artnr '].'</artnr>
				<gr>'.$data['weight'].'</gr>
				<geschm>'.$data['taste'].'</geschm>
				<zutat>'.$data['ingredients'].'</zutat>
				<nahr>'.$data['nutritional'].'</nahr>
				<maincats>'.$data['maincats'].'</maincats>
				<prodcats>'.$data['prodcats'].'</prodcats>
				<packg>'.$data['packages'].'</packg>
				<pic>http://'.$_SERVER['SERVER_NAME'].'/uploads/tx_dsmdbakerygalerie/'.$data['prodimg'].'</pic>
				<thumb>http://'.$_SERVER['SERVER_NAME'].'/uploads/tx_dsmdbakerygalerie/'.$data['prodthumb'].'</thumb>
				<pdf>'.$data['datalink'].'</pdf>
				<preis>'.$data['price'].'</preis>
			</prod>';
		}
		
	$content .='</DATEN>';

	
		return $content;
	}

Vielen dank schon Mal. #giggle#

Julian.​Hofmann ·

Hallo.

Wenn ich das richtig sehe, dann wird der Prolog doppelt generiert: einmal via TYPO3, einmal in Deiner Funktion.

Wie versuchst Du Dein XML aufzurufen? Manche Browser reagieren auf XML-Fehler etwas aussagekräftiger, manche leider recht allergisch. Safari hat mir bisher immer ganz gut geholfen.

Viele Grüße
Julian

TheFreeman ·

Hallo Julian, danke für Deine schnelle Antwort. ;-)

Also auch im Safari ist der Quelltext leer. 😢

Wenn ich den Prolog im TS auskommentiere, ändert sich leider nichts.

XML.10 = TEXT
XML.10.value = <hello>world</hello>

...bringt auch keine Ausgabe

TheFreeman ·

Hallo Georg,

Das hab ich schon gemacht. Allerdings bei kj_con2xml, mc_googlesitemap, ect.
Nur finde ich eben meinen Fehler nicht. Das liegt wohl daran, daß ich mit den T3-Typischen Regeln in diesem Bereich noch nicht so fit bin. :o

just2b ·

Hallo,

TS:

export_xml >
export_xml = PAGE
export_xml {
  typeNum=500
  config.disableAllHeaderCode = 1
  config.metaCharset = utf-8
  config.additionalHeaders = Content-Type:text/xml;charset=utf-8
  config.xhtml_cleaning = 0
  config.admPanel = 0
  config.sendNoCacheHeaders = 1
  config.no_cache = 1

      10 < plugin.tx_deineext_pi1
      10.userFunc = tx_deineext_pi1->xmlFunc
}

und dann in deiner Extension in der Fkt xmlFunc den Inhalt basteln, zB einfach ein return <content>bla</content>

ansprechen tust du das dann mit parameter &type=500

georg