mit php anzahl eines xml-elements ermitteln?
ich hatte vor mit folgendem code alle inhalte einer xml-datei mit dem selben tag der reihe nach ausgeben zu lassen:
$xml = simplexml_load_file('demo.xml');
for ($seite = 0; $seite < $anzahl; $seite++) {
echo $xml->seite[$seite];
}
aber ich weiß nicht, wie ich auf $anzahl kommen sollen. wie kann ich das ermitteln?
Antwort schreiben
Antwort 1 von irgendjemand vom 19.01.2022, 22:29 Options
ich hätte ja gedacht, da wüsste sofort jemand eine antwort. jetzt hab ich die lösung selbst gefunden:
$xml = simplexml_load_file('demo.xml');
for ($seite = 0; $seite < $seite+1; $seite++) {
if ($xml->seite[$seite] == '') exit;
echo $xml->seite[$seite];
}
Antwort 2 von Supermax vom 20.01.2022, 08:55 Options
Du kannst auch einfach mit foreach() über alle Elemente iterieren, ohne die Anzahl vorab kennen zu müssen:
foreach ( $xml->seite as $s)
{
echo "$s\n";
}
siehe auch
Manual auf PHP.NET, Beispiel #4
Antwort 3 von irgendjemand vom 20.01.2022, 23:13 Options
und wieso nicht:
foreach ( $xml->seite as $s)
{
echo $s;
}
? und wenn ich dann darin auf ein untergeordnetes element zugreifen will, wo krieg ich dann den wert in der eckigen klammer her: $xml->seite[$seite]->seitenname
?
Antwort 4 von son_quatsch vom 21.01.2022, 07:45 Options
Das ist jetzt zu schwammig gefragt. Vielleicht nochmal ein paar Beispiele, was alles möglich ist. Ansonsten musst du detaillierter fragen, was genau du meinst. Oder am besten uns die Ausgabe des letzten Beispieles zukommen lassen.
Alle Elemente eines Felds ausgeben:
foreach( $xml->seite as $key1=> $val1 ) {
echo "Key: $key1 - Value: $val1<br/>\n";
}
Die Anzahl eines Felds ermitteln:
echo "Anzahl: ". count( $xml->seite );
Struktur eines Elements ausgeben:
print_r( $xml-> seite );
Antwort 5 von irgendjemand vom 21.01.2022, 16:43 Options
dann genauer:
wozu das \n ?
und wie kann ich in diesem beispiel den inhalt von <name></name> immer zusammen mit der <seite> ausgeben, wenn ich doch gar nicht genau weiß, welche <seite> gerade ausgegeben wird:
<website>
<seite>
<name></name>
</seite>
<seite>
<name></name>
</seite>
</website>
?
Antwort 6 von son_quatsch vom 22.01.2022, 07:31 Options
Zitat:
wozu das \n ?
Damit nicht nur im HTML ein Umbruch stattfindet (<br/>), sondern auch im Quellcode selbst (\n).
Und die Lösung für dich steht als ein Beispiel direkt in der PHP-Doku:
http://de2.php.net/manual/de/function.simplexml-load-file.php#86471. Abstrahiert auf diese XML...
<website>
<seite>
<name>eins</name>
</seite>
<seite>
<name>zwei</name>
</seite>
</website>
...sieht der Code für dich folgendermaßen aus:
<?php
$xml= simplexml_load_file( 'xml.xml' );
$iCnt= count( $xml-> seite );
for( $i1= 0; $i1< $iCnt; $i1++ ) {
echo "Seite: $i1 - Name: ". $xml-> seite[$i1]-> name. "<br/>\n";
}
?>