通常,我必须解析的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;
}
答案 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;
会给你“蓝色”
答案 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