如何使用PHP解析此XML

时间:2012-06-29 17:20:29

标签: php xml

通常,我必须解析的XML文件是这样的:

<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;
  }

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

您可以访问属性,就像访问关联数组中的元素一样:

foreach($feed_widget as $name) {
    $title = $name['Title'];
    $color = $name['Color'];
    $price = $name['Price'];
}

答案 2 :(得分:1)

您需要使用元素的attributes()。

例如,您想要

$feed_widget -> attributes() -> Color;

会给你“蓝色”

资源:http://www.w3schools.com/xml/xml_attributes.asp

答案 3 :(得分:1)

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

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

Title =“large”Color =“blue”等是XML标签的属性。您在问题中提供的foreach语句将提取XML标记的CONTENTS(开始标记和结束标记之间出现的内容)。你不会得到任何东西,因为CONTENTS是一个零长度的字符串。

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