Seite 1 von 1

Wer kennt sich mit den PHP SimpleXML Funktionen aus?

Verfasst: 03.07.2008, 09:37
von pvdb
Hi,

in meiner Anwendung nutze ich ein SimpleXML zum einlesen von Daten. In dem XML befinden sich mehrere Produkte, wobei jedes Produkt mehrere Barcodes (eans) haben kann.

Das einlesen der Produkte stellt kein Problem dar. Hierzu findet man ja auch viele Beispiele im Internet. Nun gehts aber eine Ebene tiefer und ich will die Barcodes einlesen.

Ich habe es SimpleXML Konform leider nicht geschaft, sondern nach langen veruschen nur mit einem Umweg (Marke Eigenbau:)). Es haut so zwar hin, aber ich finde den weg nicht schön und wollte mal schauen ob hier jemand ist, der wir zeigen kann, wie ich die Barcodes auch besser auslesen kann.

Ich habe mein Problem mal auf 50 Zeilen Code gedrosselt, die man sich in ein php file kopieren und gleich ausführen kann.

Code: Alles auswählen

<?
// test xml
$xml_str = '<?xml version="1.0" encoding="ISO-8859-1"?>
   <products>
      <product>
         <id>10000</id>
         <name>duke forever</name>
         <model>DNF3DS</model>
         <eans>
            <ean>4041377002132</ean>
            <ean>123456789</ean>
            <ean>123445664534</ean>
         </eans>
      </product>
      <product>
         <id>10001</id>
         <name>Technische Analyse Buch</name>
         <model>TAB23GD</model>
         <eans>
            <ean>9783898790628</ean>
         </eans>
      </product>
   </products>';

// read and parse xml
$xml = new SimpleXMLElement&#40;$xml_str&#41;;
foreach &#40;$xml->product as $product&#41; 
&#123;
   // show product
   echo $product->id . " | " . $product->name . " | " . $product->model . "<br>"; 
      
   // show eans
   $i = 0;
   while &#40;true&#41;
   &#123;
      if &#40;isset&#40;$product->eans->ean&#91;$i&#93;&#41;&#41;
	  &#123;
	     echo $product->eans->ean&#91;$i&#93; . "<br>";			 
		 $i++;
	  &#125;
	  else
	     break;		 
   &#125;
      
   echo "<hr>";
&#125;
?>
Ich nutze ja eine while Schleife um die Barcodes (eans) zu lesen und das müsste ja auch irgendwie mit einem foreach gehen? Ich hatte es leider nicht so hinbekommen.

Phil

Verfasst:
von
SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Verfasst: 03.07.2008, 17:32
von CIX88
Naja lasse doch $product->eans durch foreach() laufen.
Verstehe das Problem nicht ganz.

Code: Alles auswählen

foreach &#40; $product->eans->ean as $ean &#41; echo $ean . " <br>";

Verfasst: 03.07.2008, 20:41
von pvdb
Hm, klingt eigentlich logisch. Gute Frage wieso ich es nicht hingepackt habe. Nun konnte ich zumindest sämtliche Notlösungen durch einen sauberen Weg austauschen.

Besten dank nochmal.

Verfasst: 04.07.2008, 07:29
von CIX88
Du kannst alledings noch Abfragen ob $product->eans auch wirklich Daten enthält.
if ( count($product->eans) > 0 ) sollte da schon reichen. Falls es mal keine Werte bei „ean” geben sollte, würde foreach() dann eine Fehlermeldung erzeugen.

Verfasst: 04.07.2008, 19:26
von pvdb
Jo, vielen Dank noch für diese Info. Fehlermeldungen hab es wohl keine bisher, habs aber dennoch mal mit reingenommen ;)