2017-08-07 2 views
0

Est-ce que quelqu'un a expérimenté différents résultats de tag/élément XML lors de l'utilisation de l'API d'Amazon? Si oui, comment puis-je obtenir l'information que je veux si elle est différente d'un livre à l'autre?Pourquoi les résultats de différents tags/éléments sont-ils différents lors de la recherche de différents livres sur Amazon Product Advertising API?

Cas: J'essaie d'obtenir le nombre de pages des livres que je recherche. Pour la plupart, il fonctionne correctement avec le code XML suivant ira chercher

$base->Items->Item->ItemAttributes->NumberOfPages 

Cependant, quand je cherchai livre avec ISBN 0743234804, je besoin d'interroger ce qui suit pour obtenir le numéro de page:

$base->Items->Item[1]->ItemAttributes->NumberOfPages 

Ceci est assez peu fiable, surtout s'il y a d'autres cas. Comment allez-vous sur ce problème?

** Mise à jour la question - changé la requête qui produirait les informations de la page correcte **

+0

est-ce pas '$ base-> Items-> item- > ItemAttributes ... 'la même chose que' $ base-> Items-> Item [0] -> ItemAttributes ... '? Si c'est le cas, la question devrait être prise en compte en examinant le XML pour déterminer pourquoi vous avez parfois besoin du premier élément et d'autres fois vous avez besoin du second. Vous devriez alors être en mesure de trouver le bon endroit pour regarder, par programmation. –

Répondre

0

Apparemment, il peut y avoir plusieurs types différents du même livre (? Hardcover/brochée/kindle) et donc qu'Amazon fournir de multiples étiquettes de.

Le problème est que certaines de ces balises n'ont pas tous les ItemAttributes. Mais l'un d'entre eux autorise les NumberOfPages que je voulais.

Solution: Juste boucle à travers les balises et vérifier si elle a l'élément NumberOfPages et si elle n'attribue alors à une variable:

for ($i=0; $i < 7; $i++) { 
    if(@$base->Items->children()[$i]->ItemAttributes->NumberOfPages){ 
     $amazonprice = @$base->Items->children()[$i]->ItemAttributes->NumberOfPages; 
    } 
}