从webservices xml文件读取时出错

时间:2012-04-11 17:48:33

标签: php xml

我正在尝试使用一个小的PHP脚本从webservices xml文件获取客户端的产品列表到SQL数据库,但我似乎无法让它工作。

相关代码如下:

$c = 0;  
...
$xml = simplexml_load_file($completeurl);
$listingsArray = $xml->listings->listing;

foreach($listingsArray as $listing){
    $addition[0] = $listing[$c]->type;
    $addition[1] = $listing[$c]->condition;
    //etcetera
    c = c + 1;
}

XML文件格式如下:

<inventory>
    <listings>
        <listing>
            //tags for type, condition, etc
        </listing>
    </listings>
</inventory>

$ completeurl是一个包含xml文件url的字符串 $ addition是一个在代码前面定义的数组

我已经在这方面工作了一段时间,但我似乎无法弄清楚错误在我的代码中的位置。我遇到的问题是$ listingsArray应该有接近100个元素,但是经常会出现0.有人看到我做错了吗?

编辑:我尝试过更改

$listingsArray = $xml->listings->listing;

$listingsArray = $xml->listings;

但是空字符串仍然被写入$ addition数组。一个var_dump的listingsArray显示所有信息都在那里。

2 个答案:

答案 0 :(得分:1)

如果你想要每个商品,我相信你的孩子太深了。

$listingsArray = $xml->listings->listing;

shoudl be

$listingsArray = $xml->listings;

foreach($listingsArray as $listing){
    $addition[0] = $listing[$c]->type;
    $addition[1] = $listing[$c]->condition;
    //etcetera
}

另外什么是$ c?它还有助于发布您的确切错误。调试插入var_dumps时非常有帮助。如果您认为问题是$listingArray 打印出来,看它是否包含你想要的数据。

答案 1 :(得分:0)

更改

$listingsArray = $xml->listings->listing;

$listingsArray = $xml->listings;

应该解决问题。你将$ listingsArray设置为列表数组,然后foreach尝试进入另一个级别