PHP kullanarak aynı adları vardır XML öğelerinin değerlerini alma

2 Cevap php

Onlar aynı ada sahip coz tüm 3 GÖRÜNTÜ elementlerden değerleri almak bir sorun var. Aşağıda benim xml linki

<FOUND>
    <IMAGES>
    <IMAGE>
      <SMALL>images/small.jpg</SMALL> 
      <MED>images/med.jpg</MED> 
      <LARGE>images/large.jpg</LARGE> 
      <EXTRAL>images/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images1/small.jpg</SMALL> 
      <MED>images1/med.jpg </MED> 
      <LARGE>images1/large.jpg</LARGE> 
      <EXTRAL>images1/extra.jpg</EXTRAL> 
    </IMAGE>
    <IMAGE>
      <SMALL>images2/small.jpg</SMALL> 
      <MED>images2/med.jpg </MED> 
      <LARGE>images2/large.jpg</LARGE> 
      <EXTRAL>images2/extra.jpg</EXTRAL> 
    </IMAGES>
</FOUND>

Ben ilk bloğu dönecektir php bir fonksiyon yazdım.

function images($id){

$xml=simplexml_load_file("feed.xml");


    foreach ($xml->FOUND->IMAGES as $image)
{
    $imagearr[]=array(

    'small'=>$image->IMAGE->SMALL,
    'med'=>$image->IMAGE->MEDIUM,
    'large'=>$image->IMAGE->LARGE,
    'xl'=>$image->IMAGE-> EXTRAL,



    );

}
return $imagearr;
    }

Nasıl bütün 3 GÖRÜNTÜ elemanları kapmak için alabilirim? Ben aşağıda html tabloya döndürülen değeri kullanmanız gerekir

<table width="200" border="1">
  <tr>
    <td>small</td>
    <td>medium</td>
    <td>large</td>
  </tr>
  <tr>
    <td>small</td>
    <td>medium</td>
    <td>large</td>
  </tr>
  <tr>
    <td>small</td>
    <td>medium</td>
    <td>large</td>
  </tr>
</table>

Herhangi bir yardım çok takdir edilecektir

2 Cevap

Ben bir dizi dönmek için XPath'i kullanabilirsiniz.

Bu deneyin:

$xml = simplexml_load_file('feed.xml');

$results = $xml->xpath('//IMAGE');

var_dump($results);

Çıkış ...

array(3) {
  [0]=>
  object(SimpleXMLElement)#2 (4) {
    ["SMALL"]=>
    string(16) "images/small.jpg"
    ["MED"]=>
    string(14) "images/med.jpg"
    ["LARGE"]=>
    string(16) "images/large.jpg"
    ["EXTRAL"]=>
    string(16) "images/extra.jpg"
  }
  [1]=>
  object(SimpleXMLElement)#3 (4) {
    ["SMALL"]=>
    string(17) "images1/small.jpg"
    ["MED"]=>
    string(16) "images1/med.jpg "
    ["LARGE"]=>
    string(17) "images1/large.jpg"
    ["EXTRAL"]=>
    string(17) "images1/extra.jpg"
  }
  [2]=>
  object(SimpleXMLElement)#4 (4) {
    ["SMALL"]=>
    string(17) "images2/small.jpg"
    ["MED"]=>
    string(16) "images2/med.jpg "
    ["LARGE"]=>
    string(17) "images2/large.jpg"
    ["EXTRAL"]=>
    string(17) "images2/extra.jpg"
  }
}

Daha sonra gibi bir şey ile sonuçları yineleme mümkün olacak

foreach($results as $row)
{
 print $row->SMALL;
}

Umut olur

biraz daha orijinal php kodu ile sopa, böyle bir şey deneyebilirsiniz:

$xml=simplexml_load_file("feed.xml");

$imagearr= array();
foreach ($xml->IMAGES->IMAGE as $image)
{
   $imagearr[]=array(
     'small'=>$image->SMALL,
     'med'=>$image->MEDIUM,
     'large'=>$image->LARGE,
     'xl'=>$image->EXTRAL);
}
return $imagearr;