2015-10-25 57 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

所以如果我没有弄错,你想从每个/图像部分获得第二个图像? 我为你做了一件事,为此我又增加了一个例子。 –