Aller au contenu

Probleme Flux XML Google Shopping


Sujets conseillés

Posté

Bonjour à tous,

J'ai beau lire et relire les spécifications et les exemples de Google shopping concernant le flux XML, il m'est sans cesse rejeté et je cale ! Je fais donc appel à la communauté pour avoir un avis éclairé.

Voici les erreur indiquées par google shopping :

Assurez-vous que votre flux de données contient tous les attributs obligatoires.

Attribut obligatoire manquant : price

Attribut recommandé manquant : brand

Attribut recommandé manquant : mpn

Attribut recommandé manquant : google product category

Attribut recommandé manquant : image link

Hors voici ce que contient le Flux XML. Exemple pour un article et uniquement pour les balises indiquées en erreur par Google :

<item>

<g:price>9.90 EUR</g:price>

<g:brand>la marque</g:brand>

<g:mpn>5106</g:mpn>

<g:google_product_category>Vetements et accessoires > Vetements > Sous-vetements et chaussettes > Sous-vetements</g:google_product_category>

<g:image_link&gt;http://www.ndd.fr/images/dossier/5106-ref.jpg</g:image_link>

</item>

Cela vous inspire quoi ?

D'avance merci de votre aide.

Si l'un d'entre vous a un exemple de flux XML accepté par google, je suis preneur de l'URL pour comparer avec mon flux.

Sylvain

Posté

Tu as des exemples ici:
/>http://www.google.com/support/merchants/bin/answer.py?hl=fr&answer=188476&ctx=cb&src=cb&cbid=-mcjwjfnrl8m4&cbrank=1

(en déroulant la première section, "Problèmes relatifs à la création de fichiers de données")

Bizarrement, ils ne mettent pas de devise dans les prix dans leurs exemples.

Quelques points à vérifier:

- le fichier passe-t-il une validation XML?

- utilises-tu le bon encodage, et correspond-il à ce que tu indiques dans le header <?xml...?>?

- le problème se présente-t-il pour tous les produits ou seulement certains? Si c'est le cas, ça peut être un problème d'encodage (de & et < en particulier).

Jacques.

Posté

Merci Jacques,

J'avais également pensé à l'encodage et j'ai donc supprimé la déclaration d'encodage en tête de fichier et laissé comme suit :

<?xml version="1.0"?>

<rss xmlns:g=&quot;http://www.base.google.com/ns/1.0" language="FR" country="FR" version="2.0">

<channel>

Je n'avais pas pensé aux validation XML, ce que je viens de faire :

a) xmlvalidation.com : no error were found

B) validator.w3c.org : This document was successfully checked as well-formed XML mais 2 Warnings.

- No DOCTYPE found! Checking XML syntax only.

The DOCTYPE Declaration was not recognized or is missing. This probably means that the Formal Public Identifier contains a spelling error, or that the Declaration is not using correct syntax, or that your XML document is not using a DOCTYPE Declaration.

Validation of the document has been skipped, and a simple check of the well-formedness of the XML syntax has been performed instead.

- No Character encoding declared at document level

No character encoding information was found within the document, either in an HTML meta element or an XML declaration.

Je pense que j'en saurai davantage demain car le cron google passe chaque matin sur le flux.

Je posterai ici le résultat...

Sylvain

Posté

Existe-t-il un site ou l'on trouve l'ensemble des caractères autorisés (et interdits) en UTF-8 ?

Je pense notamment aux caractères accentués (é, ê,è, à...) et spéciaux (<, >, &, !...)

Merci

Sylvain

Posté

Il n'y a pas de caractères interdits en UTF-8, UTF-8 n'est qu'un encodage, qui permet d'encoder n'importe quel caractère Unicode.

En XML, tu dois obligatoirement "échapper" < (puisque c'est le début d'un tag) et & (puisque c'est le début d'une entité), qui sont donc respectivement "<" et "&" dans le texte. Dans les attributs, tu dois aussi échapper ' et/ou " ("'" et """ respectivement). On échappe aussi souvent > (">").

Tu peux échapper n'importe quel autre caractère sous forme d'une entité numérique (decimal; ou hexa;), mais ce n'est normalement pas nécessaire si tu respectes bien l'encodage indiqué (i.e. si tu ne balances pas de l'iso-8859-1 en disant que c'est de l'UTF-8, ou l'inverse).

Jacques.

Posté

Si tu ne souhaites ou ne peux pas échapper ces valeurs, tu peux aussi mettre tout le contenu du champ dans une section d'échappement CDATA :

<xml>
<ton_champ>
<![CDATA[
Ton <code> ici, non-échappé
]]>
</ton_champ>
</xml>

Posté

Merci pour les informations. Je pense en effet que j'ai un problème de format. Le message d'erreur ce matin est :

"Erreur de format XML - Erreur - Votre flux contient un caractère qui n'est pas autorisé par le codage UTF-8."

Je pense que les CDATA pourront m'aider. Deux questions :

a) dans une balise CDATA dois-je insérer un "e" accent circonflexe comme "ê" ou commme "ê" ?

B) L'un de vous aurait-il une URL de flux XML accepté par google que je puisse regarder pour comparer avec le mien ?

Merci et bonne soirée.

Sylvain

Posté

L'erreur en question (qui n'est stricto sensu pas exacte d'ailleurs) me fait penser que tu dis (éventuellement implicitement) que c'est de l'UTF-8, alors qu'en fait tu balances de l'ISO-8859-1 ou quelque chose du genre. Tous les caractères sont autorisés en UTF-8, mais pas toutes les séquences d'octets.

Donc soit tu t'assures que l'encodage que tu utilises correspond à celui que tu déclares, soit tu bottes en touche en utilisant des entités (soit textuelles commes é soit numériques comme é).

Jacques.

Posté

B) L'un de vous aurait-il une URL de flux XML accepté par google que je puisse regarder pour comparer avec le mien ?

Ici un export XML boutique en ligne épices :P

Ce lien est actuellement intégré chaque jour dans Google Shopping : exemple thé matcha

A noter qu'il y a un bug je pense, mais mes poids précisent bien l'unité (g) et pourtant ils sont affichés en kg (ce qui applique automatiquement le maxi de frais de port) - c'est galère et je n'arrive pas à les contacter à ce sujet..

Dans d'autres flux moins "modernes", j'ai souvent les cas d'articles avec des caractères invalides, souvent ce sont des fiches articles qui proviennent de copier/coller (pas bien), avec des retours chariots (CR-LF) par exemple :unsure: il faut faire un script qui les transforment...

Posté

Merci à tous, vos explications m'ont mis sur la piste et je pense avoir résolu le problème. En fait j'ai compris que l'encodage se gère au moment de la sauvegarde du fichier et non pas à l'intérieur du fichier.

Aussi, j'ai mis la fonction "utf8_encode" en action à la sauvegarde du flux ( fputs($fp,utf8_encode($_xml)) ) ce qui a eu pour effet de sauvegarder le fichier dans le bon format.

Et en plus j'ai appris quelque chose.

Merci à tous encore.

Sylvain

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...