2015-10-25 59 views
3

我想從使用simple_xml的XML文件中獲取數據,到目前爲止我可以獲取除圖像以外的所有數據。我怎樣才能調用一個單一的圖像名稱?從xml導入數據

<?php 

$ur="http://services2.jupix.co.uk/api/get_properties.php?clientID=35871cc1b6d9ec6237aaaf94aa0e0836&passphrase=cvYG9f"; 
$xml = simplexml_load_file($ur); 

foreach ($xml->property as $property): 

var_dump($property->images->image); 

回聲圖像 - >圖像「>'; //這是不顯示

endforeach;?> 

我的代碼輸出如下面的圖像如何顯示圖像編號1 公衆1 =>字符串 'http://media2.jupix.co.uk/v3/clients/657/properties/1356/IMG_1356_9_large.jpg'(長度= 77)

enter image description here

+0

如果您提供了一個很好的最小有效XML樣本,而不是圖像,它可以更方便地幫助您。所以'echo $ ur',最小化它,然後編輯你的問題並添加它。 – michi

回答

0

謝謝蓋伊我找到了解決我的問題。 回頭看看這個問題似乎我沒有把它放在正確的方式 我只想要在該部分顯示圖像。 Xpath沒有必要但我從中學到了東西。這是我的解決方案,如果你可以改進它,你很受歡迎。

$url ="http://services2.jupix.co.uk/api/get_properties.php?clientID=35871cc1b6d9ec6237aaaf94aa0e0836&passphrase=cvYG9f"; 
$xml = simplexml_load_file($url); 
foreach ($xml->property as $property): 
?> 
    <li> 
    <h3> <?php echo $property->addressStreet;?> </h3> 

     <?php 
$imgCount = count($property->images->image); 
    for ($i=0; $i < $imgCount; $i++) { ?>  

<img src="<?php echo $property->images->image[$i];?>">  

     <?php } ?> 
     <p><?php echo limit_text($property->fullDescription,30);?></p> 
      <h4>&pound; <?php echo $property->price;?> </h4> 
    </li> 
     <?php endforeach; ?> 
0

我覺得SimpleXMLElement::xpath可以做你在找什麼:

你可以試試這個:

<?php 
$ur="http://services2.jupix.co.uk/api/get_properties.php?clientID=35871cc1b6d9ec6237aaaf94aa0e0836&passphrase=cvYG9f"; 
$xml = simplexml_load_file($ur); 
$image = $xml->xpath('//property/images/image[@modified="2014-07-23 14:22:05"]')[1]->__toString(); 
var_dump($image); 

或者您也可以通過所有的圖像循環並檢查名稱的您正在尋找:如果你想要得到的

$images = $xml->xpath('//property/images/image'); 

foreach ($images as $image) { 
    $url = $image->__toString(); 
    if (false !== strpos($url, "_9_large.jpg")) { 
     var_dump($url); 
    } 
} 

第二個圖像的每個/圖像部分,那麼你可以這樣做:

$images = $xml->xpath('//property/images'); 
foreach ($images as $image) { 
    if (isset($image->children()[1])) { 
     var_dump($image->children()[1]->__toString()); 
    } 
} 
+0

這可能是正確的答案,如果我知道修改的結果,而且這是在foreach循環。我正在考慮$ result = $ xml-> xpath('// property/images/image [@modified =''。$ property-> images-> image [0]。'「]')[1] - > __toString();但它不起作用 – user2560659

+0

我已經添加了另一個示例,您可以遍歷所有圖像並篩選出您正在查找的圖像。 –

+0

所以如果我沒有弄錯,你想從每個/圖像部分獲得第二個圖像? 我爲你做了一件事,爲此我又增加了一個例子。 –