Ebay api GetSellerList, анализ XML-ответа

Я использую API для торговли на ebay, чтобы получить акции продавцов, которые в настоящее время перечислены. Я использую вызов 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), чтобы попытаться получить значения тегов xml с помощью getElementsByTagName.

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

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

Теперь я надеялся, что смогу создать массив с этим, а затем использовать foreach, чтобы вставить их в базу данных, но когда я использую это, он получает только значение первого тега «Title».

Я уверен, что есть способ создать массив со всеми значениями «Заголовок» в нем. Вся помощь приветствуется.


person Ace    schedule 29.07.2012    source источник


Ответы (1)


На этот вопрос было бы легче ответить, если бы вы разместили ответный 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;
}
person John C    schedule 30.07.2012