2012-06-29 148 views
1

通常情況下,XML文件,我必須分析是這樣的:如何解析這個XML與PHP

<row id="1"> 
    <title>widget<title> 
    <color>blue<color> 
    <price>five<price> 
</row> 

其中我會再分析是這樣的:

$xmlstr_widget = file_get_contents($my_xml_feed); 
$feed_widget = new SimpleXMLElement($xmlstr_widget); 

foreach($feed_widget as $name) { 
    $title = $name->title; 
    $color = $name->color; 
    $price = $price->price; 
    } 

的偉大工程!但現在我有一點不同的格式XML和我有點爲難,因爲我沒有一大堆的XML解析經驗:

<Widget Title="large" Color="blue" Price="five"/> 
<Widget Title="small" Color="red" Price="ten"/> 

如何鑽入一個遠一點,並把它解析正常嗎?我嘗試了一些東西,但沒有成功。

所以問題是當我嘗試使用不同的xml feed時,我不能回顯任何結果。

foreach($feed_widget as $name) { 
    $title = $name->title; 
    $color = $name->color; 
    $price = $price->price; 
    } 
+1

嗯,你有一個例子,你在哪裏解析XML - 究竟是什麼問題呢? – feeela

回答

2

可以使用attributes()方法得到的屬性列表上一個元素:

foreach ($xml as $element) { 
    foreach ($element->attributes() as $name => $value) { 
     echo "$name = $value\n"; 
    } 
} 

輸出:

Title = large 
Color = blue 
Price = five 
Title = small 
Color = red 
Price = ten 
2

您可以訪問的屬性,就像您訪問關聯數組元素:

foreach($feed_widget as $name) { 
    $title = $name['Title']; 
    $color = $name['Color']; 
    $price = $name['Price']; 
} 
1
<Widget Title="large" Color="blue" Price="five"/> 

是短手

<Widget Title="large" Color="blue" Price="five"></Widget> 

標題= 「大」 Color =「blue」等是XML標籤的ATTRIBUTES。您在問題中提供的foreach語句將提取XML標記的CONTENTS(在開始和結束標記之間出現的內容)。你不會得到任何東西,因爲CONTENTS是一個零長度的字符串。

http://www.php.net/manual/en/simplexmlelement.attributes.php