2013-02-07 19 views
0

我一直在處理這個列表,它將提供來自xml文件的信息。我正在使用的標記如下:在文檔中查找所有類似的屬性,並根據值更改輸出

<?php 
    $xml_file = '/path'; 
    $xml = simplexml_load_file($xml_file); 

    foreach($xml->Continent as $continent) { 
     echo "<div class='continent'>".$continent['Name']."<span class='status'>".$continent['Status']."</span>"; 
     foreach($continent->Country as $country) { 
      echo "<div class='country'>".$country['Name']."<span class='status'>".$country['Status']."</span>"; 
       foreach($country->City as $city) { 
       echo "<div class='city'>".$city['Name']."<span class='status'>".$city['Status']."</span></div>"; 
       } 
       echo "</div>"; // close Country div 
     } 
     echo "</div>"; // close Continent div 
    } 

?> 

我試圖完成的是改變'狀態'。無論元素如何,「狀態」只有兩個值,並且始終爲「紅色」或「藍色」。我想要做的是瀏覽整個文檔,找到「狀態」屬性,看看值是否是「紅色」,然後顯示一個圖標或一些文本,但如果它是藍色,則不顯示任何內容。我遇到過不同的例子,但沒有一個表明這種普遍性。大多數示例都是用於查找特定節點,然後顯示它的屬性。如果可能,我也試圖避免在每個循環中創建此規則,而是將其應用於整個文檔(如果這看起來是最好的方法)。

+1

你想要改變與PHP的地位?或JavaScript?如果它是PHP爲什麼用javascript標記你的問題? – Tivie

+0

我正在尋找最合適的方法,無論是PHP還是javascript。我不想改變價值,我只是想根據價值來控制html輸出 - 幸好,Orbit中的Lightness Races爲我改變了標題。 :) – Harlow

+0

如果它只是美學,你可以使用條件樣式。 – Tivie

回答

1

使用css選擇器而不是javascript。這將使你的代碼更輕鬆,更簡單!

例如:

<?php 
    $xml_file = '/path'; 
    $xml = simplexml_load_file($xml_file); 

    foreach($xml->Continent as $continent) { 
     echo "<div class='continent'>".$continent['Name']."<span class='status ". cssForStatus($continent['Status'])."'></span>"; 
     foreach($continent->Country as $country) { 
      echo "<div class='country'>".$country['Name']."<span class='status ". cssForStatus($country['Status'])."'></span>"; 
       foreach($country->City as $city) { 
       echo "<div class='city'>".$city['Name']."<span class='status ". cssForStatus($city['Status'])."'></span></div>"; 
       } 
       echo "</div>"; // close Country div 
     } 
     echo "</div>"; // close Continent div 
    } 

    function cssForStatus($status='') 
    { 
     switch ($status) { 
     case 'red': 
      $css = "red"; 
      break; 

     default: 
      $css = "blue"; 
      break; 
     } 
     return $css; 
    } 

,而你的CSS可以:

span.status { 
    height: 10px; 
    width: 10px; 
} 

span.status.red { 
    background-color: "red"; 
} 

span.status.blue { 
    background-color: "blue"; 
} 

我們使用多個CSS類

+0

一個純粹的審美修復不完全是我心中所想,但我絕對可以用這個。我甚至沒有想過將狀態信息作爲一個班級輸出。這是一個非常有創意的解決方案,謝謝,Birla! – Harlow

0

的概念只是稍微改變你的代碼添加狀態爲您div類。

例子:

echo "<div class='continent status-{$continent['Status']}'>{$continent['Name']}</div>"; 

這將輸出(在一個名爲歐洲紅色大陸的情況下)

<div class='continent status-red'>Europe</div> 

那麼這個CSS添加到您的HTML:

.status-red { 
    background-color: red; 
} 

.status-blue { 
    background-color: blue; 
} 

或者服用點沿着這些線

相關問題