2013-05-14 58 views
1

我具有以下輸出:XML/Array對密鑰值對在PHP

<table count="" time="0.010006904602051"> 
<item> 
<id>607</id> 
<name>MSPOT6071</name> 
<description>Hip Hop/Raps</description> 
<type>3</type> 
<radio_folder_id/> 
<albumart> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg 
</albumart> 
<albumart_300> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg 
</albumart_300> 
<albumart_500> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg 
</albumart_500> 
</item> 
<item> 
<id>48542614</id> 
<name>US Pop - TESTB</name> 
<description>Blues</description> 
<type>3</type> 
<radio_folder_id/> 
</item> 
</table> 

我想讀在關鍵值對的形式這個輸出,然後要存儲的每個值。 爲例如我想要的名稱的值

任何人都可以請幫助我的代碼..我沒有得到如何做的線索。

+0

你試過了什麼? – zavg 2013-05-14 01:02:02

回答

2

您可以使用simplexml擴展函數來實現您的目標。通過此擴展,您可以從filestringhtml node加載xml。按照鏈接獲取有關每個加載函數的更多信息。我將在這裏解釋如何使用simplexml_load_file加載。 此代碼:

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

?> 

將返回此:

SimpleXMLElement Object 
(
    [@attributes] => Array 
     (
      [count] => 
      [time] => 0.011766910552979 
     ) 

    [item] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [id] => 607 
        [name] => MSPOT6071 
        [description] => Hip Hop/Raps 
        [type] => 3 
        [radio_folder_id] => SimpleXMLElement Object 
         (
         ) 

        [albumart] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg 
        [albumart_300] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg 
        [albumart_500] => http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg 
       ) 

      [1] => SimpleXMLElement Object 
       (
        [id] => 48542614 
        [name] => US Pop - TESTB 
        [description] => Blues 
        [type] => 3 
        [radio_folder_id] => SimpleXMLElement Object 
         (
         ) 

       ) 

     ) 

) 

你想要的信息,可以這樣訪問:

<?php 
echo "<pre>"; 
$xml = simplexml_load_file("name.xml"); 
    print_r($xml); 
    echo "</pre>"; 
    echo "<pre>"; 
    foreach($xml->children() as $item){ 
     $arr = get_object_vars($item); 
     foreach($arr as $key=>$value){ 
      echo "$key => $value" . PHP_EOL;    
     } 
    } 
    echo "</pre>"; 
?> 

注意它將作爲對象首次訪問。然後你可以得到所有的對象變量來動態地瀏覽你的對象屬性。

+0

我嘗試了以下方法,唯一的問題是它只返回最後的結果而不是所有的結果。foreach($ result as $ key => $ value){ \t \t \t \t \t print(「Key:」。$ key。「Value:」。$ value。「\ n」); \t \t \t \t的foreach($值$子項=> $子值){ \t \t \t \t \t打印;( 「子項:」 $子項 「子值」 $子值 「\ n」 個。)。 \t \t \t \t \t $ this-> id = $ value ['id']; \t \t \t \t} \t \t \t} – user2118095 2013-05-14 01:20:04

+0

我沒有輸入XML file..so我可怎麼辦$ XML =使用simplexml_load_file( 「name.xml的」); – user2118095 2013-05-14 01:30:48

+0

我想從我的輸出中讀取所有的鍵和值。我陷入代碼中,因爲我無法糾正正確的foreach條件。我想要一個通用的foreach函數,它會根據item [0],[1] ....讀取所有的鍵和值。所以我想用item [i] foreach($ result-> children()作爲$ (「Key:」。$ key。「Value:」。$ value。「\ n」);};}} \t \t \t \t \t \t \t \t \t \t打印($ result->項[0] - >名); \t \t \t \t \t的foreach($值$子項=> $子值){ \t \t \t \t \t \t打印;( 「子項:」 $子項 「子值」 $子值 「\ n」 個。)。 \t \t \t \t \t \t // $ this-> id = $ value ['id']; \t \t \t \t \t} \t \t \t \t} – user2118095 2013-05-14 17:09:59

0

<?php 

$xmlstr = '<?xml version="1.0" standalone="yes"?> 
<table count="" time="0.010006904602051"> 
<item> 
<id>607</id> 
<name>MSPOT6071</name> 
<description>Hip Hop/Raps</description> 
<type>3</type> 
<radio_folder_id/> 
<albumart> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_175.jpg 
</albumart> 
<albumart_300> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_350.jpg 
</albumart_300> 
<albumart_500> 
http://cdn.7static.com/static/img/sleeveart/00/009/560/0000956027_500.jpg 
</albumart_500> 
</item> 
<item> 
<id>48542614</id> 
<name>US Pop - TESTB</name> 
<description>Blues</description> 
<type>3</type> 
<radio_folder_id/> 
</item> 
</table>'; 

$xml = new SimpleXMLElement($xmlstr); 

foreach($xml->item as $item) 
{ 
    echo $item->name."<br>"; 
} 

echo $xml->item[0]->name; 

echo '<pre>'; 
print_r($xml); 
echo '</pre>'; 

?> 

將您的XML字符串變量$ xmlstr,所以你就不會遇到不完整的XML文檔的錯誤,確保你包括你的XML文檔的頂部以下。

<?xml version="1.0" standalone="yes"?> 

然後使用內置的SimpleXML類通過傳遞你的XML字符串$ xmlstr到的SimpleXML:

$xml = new SimpleXMLElement($xmlstr); 

現在,您可以訪問您的XML文件中的屬性和方法的PHP對象SimpleXML類。在你的XML文檔在這個例子中,我們遍歷所有的「項目」(S),並打印出了「名」的元素:

​​

我也包括代碼訪問的第一項元素:

echo $xml->item[0]->name; 

以及一些調試代碼SimpleXML對象查看XML文檔:

echo '<pre>'; 
print_r($xml); 
echo '</pre>'; 

你可以通過它的名稱來訪問關鍵還是在這種情況下,對象的屬性。因此,在您的foreach循環,你可以做:

if($item->name) 
{ 
    echo $item->name; 
} 

if($item->description) 
{ 
    echo $item->description; 
} 

願力量與你同在。

+0

您應該提供關於此功能的解釋。 – FDinoff 2013-05-14 01:38:36

+0

謝謝你..這真的有幫助..現在我想讀取值的關鍵..所以我想驗證是否存在我的輸出中的「名稱」鍵..我應該如何得到密鑰? – user2118095 2013-05-14 06:08:13

+0

謝謝all..it幫助。 – user2118095 2013-05-15 01:08:11