2011-05-29 146 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