Hi Leute,
ich habe ein problem mit simplexml.
ich habe folgende xml:
<?xml version="1.0" encoding="iso-8859-1" ?>Sebastian BergmannProfessionelle Softwareentwicklung mit PHP 53-89864-229-1Hakan KücükyilmazThomas M. HaasAlexander MerzPHP 53-89864-236-4
lade es rein:
$xml = simplexml_load_file(‚blub.xml‘);
wenn ich jetzt das aufrufe:
$xml->book[0]
bekomme ich logischerweise das erste element.
gebe ich
$xml->book[1]
bekomme ich logischerweise das zweite element.
gebe ich
$xml->book
bekomme ich nur das erste Elemen???
will ich jetzt eine solche foreach schleife laufen lasse:
foreach($xml->book as $b){
//irgendwas mit b;
}
wird diese Schleife nur ein Mal durchlaufen… Was ist los? Eigentlich sollte mir $xml->book doch ein array zurückgeben…
ich bin am verzweifeln…
lg
Artur
Maria_L
22. Februar 2013 um 19:07
2
Hallo Artur,
das hätte ich auch so vermutet wie Du.
Ich bin allerdings mit SimpleXML nicht wirklich vertraut.
Ich arbeite bei meinen Projekten hauptsächlich mit Drupal und das hat ganz tolle Import / Export-Module, die auch XML und XPath ect verarbeiten.
Das macht faul
Hast Du das XML validiert?
Vermutlich schon…
Also da kann ich leider auch nicht helfen.
Gruß, REgina
Moin Artur,
leider kann ich dein Problem nicht rekonstruieren. Hast du mal etwas mehr Code drum herum, vielleicht steckt da der Fehler?
Hier mein Test:
$xml = new SimpleXMLElement(file\_get\_contents('simpleXMLExample.xml'));
echo 'static
';
echo $xml-\>book[0]-\>title . '
';
echo $xml-\>book[1]-\>title . '
';
echo '
';
echo 'foreach
';
foreach ($xml-\>book as $b) {
echo $b-\>title . '
';
}
Ausgabe;
static
Professionelle Softwareentwicklung mit PHP 5
PHP 5
foreach
Professionelle Softwareentwicklung mit PHP 5
PHP 5
<?xml version="1.0" encoding="iso-8859-1" ?>
Sebastian Bergmann
Professionelle Softwareentwicklung mit PHP 5
3-89864-229-1
Hakan Kücükyilmaz
Thomas M. Haas
Alexander Merz
PHP 5
3-89864-236-4
Seldon
22. Februar 2013 um 20:30
4
Mit folgendem Code:
<?php $xml = simplexml_load_file('test.xml');<br />
foreach ($xml-\>book as $book) {
echo $book-\>title . "\n";
}
?\>
erhalte ich das erwartete Ergebnis:
Professionelle Softwareentwicklung mit PHP 5
PHP 5
Aber damit hast du doch den selben Fehler!
Die Schleife sollte zwei mal ausgeführt werden. Du bekommst die Antwort ein Mal…
Welche PHP Version bist du unterwegs?
lg
Artur
Hallöchen,
mit deinem Code bekomme ich genau das selbe Ergebnis wie vorher…
Ich hab es jetzt über eine
for($i = 0;$ikey);$i++)
Schleife gemacht.
interessant ist, dass hier der count wieder geht
Danke!!!
lg
Artur
madmix
23. Februar 2013 um 04:27
7
Hey Artur,
ich denke mal das liegt daran, dass Dein Array nur ein Element beinhaltet.
Da dem zweiten und dritte Element im XML Baum die Kindknoten für und fehlen kann sich kein korrektes Array aufbauen.
Versuch doch mal folgendes:
<?xml version="1.0" encoding="iso-8859-1" ?>Sebastian BergmannProfessionelle Softwareentwicklung mit PHP 53-89864-229-1Hakan KücükyilmazPHP 53-89864-236-4Thomas M. HaasAlexander Merz
LG Mad
… mehr auf http://www.wer-weiss-was.de/app/query/display_query?..
Seldon
23. Februar 2013 um 10:43
8
Die Schleife wird doch zweimal ausgeführt, sonst würde ich nicht beide Titel bekommen.
Hallo,
bevor ich dir alles abtippe hier ein sehr nützlicher Link mit der Lösung für dein Problem:
http://professionelle-softwareentwicklung-mit-php5.d…
Viele Grüße
Sebastian_
selecto
26. Februar 2013 um 12:28
10
Hallo,
$xml->book ist kein Array sondern ein simple_xml_object, aber kann mit foreach gelooped werden.
foreach($xml->book as $b){
$author = $b->author;
$title = $b->title;
.usw…
echo $author.’-’.$title.’/n’;
}
Tip: encoding liebe auf UTF-8