Ebay api GetSellerList,解析响应XML

时间:2012-07-29 18:35:48

标签: php xml api dom ebay

我正在使用ebay trading api获取目前列出的卖家股票。我正在使用调用GetSellerList。我在解析xml时遇到问题,然后我会将其插入到网站商店中。

这是xml请求。     

<GetSellerListRequest xmlns='urn:ebay:apis:eBLBaseComponents'>

<UserID>".$user_id."</UserID>

<DetailLevel>ReturnAll</DetailLevel>
<ErrorLanguage>RFC 3066</ErrorLanguage>
<WarningLevel>Low</WarningLevel>
<Version>".$compat_level."</Version>

<RequesterCredentials>
    <eBayAuthToken>".$auth_token."</eBayAuthToken>
</RequesterCredentials>

<StartTimeFrom>2012-06-12T23:35:27.000Z</StartTimeFrom>
<StartTimeTo>2012-08-30T23:35:27.000Z</StartTimeTo>

<Pagination>
    <EntriesPerPage>200</EntriesPerPage>
</Pagination>

<OutputSelector>ItemArray.Item.Title</OutputSelector>
<OutputSelector>ItemArray.Item.Description</OutputSelector>
<OutputSelector>ItemArray.Item.BuyItNowPrice</OutputSelector>
<OutputSelector>ItemArray.Item.Quantity</OutputSelector>

</GetSellerListRequest>

我不是最好的PHP,我还在学习所以我已经浏览了w3schools和php文档,什么都没发现。我一直在使用这个(关于ebay tuts)尝试使用getElementsByTagName来获取xml标记的值。

$dom = new DOMDocument();
$dom->loadXML($response);

$titles = $dom->getElementsByTagName('Title')->length > 0 ? $dom->getElementsByTagName('Title')->item(0)->nodeValue : ''; 

现在我希望我能用这个创建一个数组然后使用foreach将它们插入数据库但是当我使用它时它只获得第一个&#39;标题&#39;的值。标签

我确定有一种方法可以创建一个包含&#39;标题&#39;的所有值的数组。在里面。 感谢所有帮助。

1 个答案:

答案 0 :(得分:2)

如果你发布了响应XML(只是相关部分)而不是请求,这将更容易回答。

您拥有的代码只会获取第一项 - 特别是此部分:

$dom->getElementsByTagName('Title')->item(0)->nodeValue

相反,您需要遍历所有Title元素并提取其nodeValue。这是一个起点:

$dom = new DOMDocument();
$dom->loadXML($response);
$title_nodes = $dom->getElementsByTagName('Title');

$titles = array();

foreach ($title_nodes as $node) {
    $titles[] = $node->nodeValue;
}