我正在尝试解析此XML文件但我收到此错误:
警告:第13行为foreach()提供的参数无效
xml是错还是我错过了什么?
XML:
<ads>
<ad>
<id>
<![CDATA[ 9009394 ]]>
</id>
<address>
<![CDATA[ NewYork ]]>
</address>
<calle_nro>
<![CDATA[ 345 ]]>
</calle_nro>
</ad>
<ads>
PHP脚本:
<?php
print '<table style="width:80%"><tr>
<th>Nro</th>
<th>link</th> </tr>';
$html = file_get_contents("http://gvaonline.com.ar/eti/eti.xml");
$feed = simplexml_load_string($html);
foreach ($feed->ads->ad as $item) {
$linkTit = $item->address;
$imgLink = $item->calle_nro;
echo '<tr>';
echo '<td>' . $linkTit . '</td>';
echo '<td> '. $imgLink .'</td>';
echo '</tr>';
}
echo '</table>';
?>
我也尝试使用simplexml_load_file()
和内部的url,但是在foreach()中遇到了同样的问题。
答案 0 :(得分:1)
所以在你的例子中看起来你的XML是无效的,但我猜这只是因为你输入了它,
你的最终xml标签应该是:
</ads>
至于你的错误,它看起来像是因为你错误地遍历XML对象。
将来调试的一种简单方法是print_r($ feed),这是它给出的输出:
SimpleXMLElement Object
(
[ad] => SimpleXMLElement Object
(
[id] => SimpleXMLElement Object
(
)
[address] => SimpleXMLElement Object
(
)
[calle_nro] => SimpleXMLElement Object
(
)
)
)
所以你应该这样做:
foreach ($feed->ad as $item) {
而不是
foreach ($feed->ads->ad as $item) {
答案 1 :(得分:0)
你的xml中有cdata,所以在解析时使用正确的语法。
类似的东西:
$feed = simplexml_load_file("http://gvaonline.com.ar/eti/eti.xml",'SimpleXMLElement', LIBXML_NOCDATA);
foreach ($feed->ad as $item) {
$linkTit = $item->address;
$imgLink = $item->calle_nro;
echo '<tr>';
echo '<td>' . $linkTit . '</td>';
echo '<td> '. $imgLink .'</td>';
echo '</tr>';
}