2017-03-15 101 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