online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon irgendjemand vom 19.01.2022, 19:21 Options

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";
  }

?> 

Ähnliche Themen

xml-Datei auslesen und in tabelle darstellen
Reavermaster  21.07.2008 - 71 Hits - 7 Antworten

Apache PHP, PHP wird nicht interpretiert
Kreavis  20.11.2008 - 105 Hits - 2 Antworten

xml dateien auslesen und in excel schreiben
habnefrage  12.04.2009 - 783 Hits - 2 Antworten

(PHP) einen PHP-Parser mit PHP programmieren
skribbtkiddie  17.07.2009 - 354 Hits - 1 Antwort

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026