2017-03-15 103 views
1

这里是一位摄影师,拥有无与伦比的编程经验。我在我的网站上工作,并得到足够多(是的,我做了很多搜索),但无法找到答案。任何人都可以将我指向正确的方向?xml string to php页面

我想为我的画廊生成代码。我有几个不同的画廊/页面,我想将所有src,alt存储在一个xml文件中,然后将其带到特定页面。

到目前为止,我有这个

<?xml version="1.0"?> 
<catalog> 
    <img id="pf01"> 
     <src>foodphotography/01</src> 
     <alt>food1</alt> 
    </img> 
    <img id="pf02"> 
     <src>foodphotography/01</src> 
     <alt>food2</alt> 
    </img> 
    <pf id="pf03"> 
     <src>foodphotography/05</src> 
     <alt>food2</alt> 
    </pf> 
</catalog> 

和PHP代码

<?php 
    // Loading the XML file 
    $xml = simplexml_load_file("img.xml"); 
    foreach($xml->children() as $img) 
    { 
     echo "<div class='swiper-slide'>\n"; 
     echo "<img src='/images/".$img->src."'  alt='".$img->alt."'>\n"; 
     echo "</div>\n"; 
    } 
?> 

我想显示一个页面上只<img>和其他<pf>。现在它显示所有3个图像。我如何从xml文件中选取特定图像?它看起来像我不能有多个目录。

有没有更好的方法来做到这一点?

谢谢

+1

XSLT吧?一些很好的资源,如果你谷歌它 –

+1

你能澄清你打算如何选择文件?现在你正在遍历所有的img元素并回显它们。因此,他们都会出现。 [您可以通过xpath方法](http://php.net/manual/en/simplexmlelement.xpath.php)或通过比较SimpleXml元素来选择特定的元素。但我们不知道您如何识别网页。 – Gordon

+0

在一页上我只想显示“img”,或者只显示“pf”。现在,它确实在目录中显示了所有3个,但理想情况下,它将在一页上显示2,在另一页上显示2,方法是通过img,pf选取它们。 –

回答

0

有很多,你可以在此过滤器的方式,但因为你有兴趣让他们在不同的页面,那么你可能只需要使用xpath过滤儿童。因此,要只显示img使用XPath /document/img

<?php 
// Loading the XML file 
$xml = simplexml_load_file("img.xml"); 

// swap children for xpath 
foreach($xml->xpath('/catalog/img') as $img) 
{ 
    echo "<div class='swiper-slide'>\n"; 
    echo "<img src='/images/".$img->src."'  alt='".$img->alt."'>\n"; 
    echo "</div>\n"; 
} 

还有你的另一页上,使用XPath /catalog/pf