我正在使用ebay交易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将它们插入数据库,但当我使用这个时,它只得到第一个"Title"标签的值
我确信有一种方法可以创建一个包含所有"Title"值的数组。感谢所有的帮助。
如果您发布响应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;
}