2012-06-29 91 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