Я использую 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 docs и ничего не нашел. Я использую это (от ebay tuts), чтобы попытаться получить значения тегов xml с помощью getElementsByTagName.
$dom = new DOMDocument(); $dom->loadXML($response); $titles = $dom->getElementsByTagName('Title')->length > 0 ? $dom->getElementsByTagName('Title')->item(0)->nodeValue : '';
Теперь я надеялся, что смогу создать массив с этим, а затем использовать foreach, чтобы вставить их в db, но когда я использую это, он получает только значение первого тега '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; }