1

通常我必须解析的 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 提要进行类似下面的操作时,我无法回显任何结果。

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

4 回答 4

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
于 2012-06-29T17:27:49.990 回答
2

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

foreach($feed_widget as $name) {
    $title = $name['Title'];
    $color = $name['Color'];
    $price = $name['Price'];
}
于 2012-06-29T17:28:16.873 回答
1

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

例如,你想做

$feed_widget -> attributes() -> Color;

会给你“蓝色”

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

于 2012-06-29T17:26:56.327 回答
1
<Widget Title="large" Color="blue" Price="five"/>

是简写

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

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

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

于 2012-06-29T17:30:50.120 回答