Problem mit PHP und XML

Black Panter

Mitglied
Hi,

ich habe eine XML-Datei
Code:
<?xml version="1.0" encoding="utf-8"?>
<gallery>
	<site>
		<logo src="" date=""></logo>
		<outer height="1024px" width="786px" border="thin solid #000" bg_img="none"></outer>
		
		<header_img src="" date="" float="left" height="13%" width="100%"font_size="20" color="000" bg_color="333" bg_img="none" align="center" valign="middle"></header_img>
		
		<menu type="" float="left" height="87%" width="20%" size="12" color="CCC" bg_color="003" border="none" hcolor="CCC" hbg_color="003" bg_img="none" align="left" valign="top">
			<mlvl1 name="Link 1 LVL 1" src=""></mlvl1>
			<mlvl1 name="Link 2 LVL 1" src="">
				<mlvl2 name="Link 2 LVL 2" src=""></mlvl2>
			</mlvl1>
		</menu>
		
		<rcontent float="left" width="80%" height="87%" bg_img="none" bg_color="">
			<content height="97%" color="CCC" bg_color="666" bg_img="none" size="" align="left" valign="middle"></content>
			<footer height="3%" color="123456" bg_color="6CF" bg_img="none" size="" align="center" valign="middle">
				<flink src="" name=""></flink>
			</footer>
		</rcontent>
	</site>
		
	<album name="" font_color="" fonz_size="" bg_color="" date="" dir="" lastchange="" comment="">
	</album>
	
</gallery>

Wenn ich diese jetzt versuche mit
PHP:
$xml = simplexml_load_file('data.xml');
print_r($xml);
auszugeben wird mir folgende Fehlermeldung angezeigt

Code:
Warning: simplexml_load_file() [function.simplexml-load-file]: data.xml:7: parser error : attributes construct error in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: <header_img src="" date="" float="left" height="13%" width="100%"font_size="20 in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: data.xml:7: parser error : Couldn't find end of Start Tag header_img line 7 in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: <header_img src="" date="" float="left" height="13%" width="100%"font_size="20 in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: data.xml:7: parser error : Opening and ending tag mismatch: site line 3 and header_img in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: r="000" bg_color="333" bg_img="none" align="center" valign="middle"></header_img in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: data.xml:22: parser error : Opening and ending tag mismatch: gallery line 2 and site in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: </site> in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: data.xml:24: parser error : Extra content at the end of the document in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: <album name="" font_color="" fonz_size="" bg_color="" date="" dir="" lastchange in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

Warning: simplexml_load_file() [function.simplexml-load-file]: ^ in G:\xampp\htdocs\progs\gallery\content\sample\style.php on line 4

liegt es an meine XML-Datei? Und wenn ja, was muss ich an ihr dann ändern?

Grüße aus Japan
Sören-san
 
Moin,

ja es liegt an der Datei
Code:
width="100%"font_size="20"
zwischen die Attribute muss mindestens ein Leerzeichen
Code:
width="100%" font_size="20"

Das wäre zumindest der erstgenannte Fehler
data.xml:7: parser error : attributes construct error
Ob danach noch weitere auftauchen, hab ich nicht geguckt, das siehst du dann schon, wenn du den Fehler behoben hast.
 
Ja, daran lags. Vielen Danke. =)

Jetzt bin ich auf ein weiteres Problem gestoßen.

Ich Möchte den Knoten-Namen überprüfen.

Jedoch funktioniert folgendes nicht:
PHP:
if ($knoten->getName() != "[knotenname]") {...code...}

Grüße aus Japan
Sören-san
 
Die DOM-Eigenschaft, die den (Tag)-Namen eines Element-Knotens beinhaltet, heisst tagName

Also
Code:
 if ($knoten->tagName != "knotenname")

Solltest du auch noch mit XPath arbeiten, dort erhältst du den Tag-Namen über die Funktion name()

Grüsse zurück nach Nippon :-)
 
Ah. Danke. =) Jertzt klappts.

Und ich bin schon wieder auf ein Problem gestoßen.

PHP:
<?php
// Mit den folgenden Zeilen lassen sich
// alle Dateien in einem Verzeichnis auslesen
$dir = "../../../content/sample/album1/img/large/";
$handle = opendir($dir);
echo "Verzeichnisinhalt:<br>\r\n";
while ($datei = readdir ($handle)) {
	if (!is_dir($datei)) {
		echo "$datei Mime-type: ";
		echo mime_content_type($datei);
		echo "<br />\r\n";
	}
}
closedir($handle);


?>

Mir wird zwar das verzeichnis ausgelesen, aber der Mime-type wird mir nicht hingeschrieben. Laut php.net sollte es eigendlich funktionieren.

Grüße aus Nippon
Sören
 
Da hab ich noch nicht mit zu Tun gehabt, aber falls du das unter Windows probierst, der 1. Kommentar im Online-Handbuch birgt die Lösung in sich.

Auf meinem Webspace scheint es diese Funktion unter Linux erst garnicht zu geben :-)

Ich würde wohl auf eine der auf php.net beschriebenen Hilfsfunktionen ausweichen.
 
Das Problem is, das die Function mime_content_type() an sich existiert...jedenfals wird mir das gesagt, wenn ich es mit function_exists() überprüfe.
 
phpinfo() gibt mir zu mime_magic folgedens aus:

Code:
mime_magic

mime_magic support	

Directive	Local Value	Master Value
mime_magic.debug	Off	Off
mime_magic.magicfile	G:\xampp\php\extras\magic.mime	G:\xampp\php\extras\magic.mime
 
Moin,

ich hab da jetzt glaub ich, so alle Lösungsvorschläge die ich gefunden hatte, ausprobiert, meine Erkenntnis: zumindest unter Windows/XAMPP bekommt man das nicht zum laufen.

Das beginnt bei einer offensichtlich fehlerhaften magic.mime(kann man im Apache-Error-Log nachlesen).
Repariere ich diese ....nix.
Setze ich mime_magic.debug auf On, bekomme ich die Meldung
mime_magic not initialized
:-)

Der beste gefundene Vorschlag ist wohl jener, dies Zeugs erst garnicht zu Benutzen :suspekt:
 
Zurück