2011-05-29 128 views
3

我有一個exrate.xml這個樣子的php讀取@attributes的xml文件循環?

<!--For reference only. Only one request every 5 minutes!--> 
    <ExrateList> 
    <DateTime>5/29/2011 8:54:12 PM</DateTime> 
    <Exrate CurrencyCode="AUD" CurrencyName="AUST.DOLLAR" Buy="21688.77" Transfer="21819.69" Sell="22201.6"/>  
    <Source>source name </Source> 
    </ExrateList> 

任何人都知道我可以讀取XML和輸出數據。

貨幣|購買|銷售

我使用

  <?php 
       = simplexml_load_file("Service/Forex_Content.xml"); 
      echo '<pre>'; 
      print_r($xml); 
      echo '</pre>'; 

     ?> 


SimpleXMLElement Object 
(
    [DateTime] => 5/29/2011 8:54:12 PM 
    [Exrate] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [@attributes] => Array 
         (
          [CurrencyCode] => AUD 
          [CurrencyName] => AUST.DOLLAR 
          [Buy] => 21688.77 
          [Transfer] => 21819.69 
          [Sell] => 22201.6 
         ) 

       ) 

我如何循環@屬性顯示的數據?

foreach ($xml as $value){ 
    foreach ($value->@attributes as $key=>$val){ // I have problem here @attributes 

     } 

} 

回答

6

用SimpleXML,屬性使用attributes()方法訪問:

foreach ($value->attributes() as $key=>$val){ 
    // do something 
} 
2

嘗試這種情況:

<?php 
$xml = simplexml_load_file("Service/Forex_Content.xml"); 
foreach($xml->Exrate[0]->attributes() as $a => $b) { 
    echo $a . '="' . $b ."\"\n"; 
} 

編輯:固定的情況。

1

$value->@attributes替換爲$value->attributes()。您可能必須沿着樹進一步到達所需節點,但您可以在任何項目上致電attributes()

0
function recurseXML($xml, $step) 
{ 
    echo "<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\" border=\"1\">"; 
    $step++; 
    foreach($xml as $key0 => $value) 
    { 
     if($key0=='Exrate') 
     {   
      echo "\n<tr>\n";     
      foreach($value->attributes() as $attributeskey0 => $attributesvalue1) 
      {  
       echo " <td> [$attributeskey0] = $attributesvalue1</td>\n"; 
      } 
      echo "</tr>\n\n"; 
     } 
     else 
     { 
      echo "\n<tr><td colspan=\"5\">$value</td></tr>"; 
     }   
    } 
    echo "</table>\n"; 
} 
$xml = simplexml_load_file("http://www.vietcombank.com.vn/ExchangeRates/ExrateXML.aspx"); 
recurseXML($xml, 0); 
+0

試着解釋一下代碼。初始代碼中有什麼不正確的? – AntonNiklasson 2012-10-28 07:56:07