php在@attributes上读取xml文件循环?

时间:2011-05-29 15:08:10

标签: php

我的exrate.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
                        )

                )

如何循环@attributes以显示数据?

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

        }

}

4 个答案:

答案 0 :(得分:6)

使用SimpleXML,可以使用attributes()方法访问属性:

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

答案 1 :(得分:2)

试试这个:

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

编辑:修复此案。

答案 2 :(得分:1)

$value->@attributes替换为$value->attributes()。您可能需要进一步向下到达所需的节点,但您可以在任何项目上调用attributes()

答案 3 :(得分: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);