Volubis, le forum IBM i Index du Forum Volubis, le forum IBM i
avec les clubs Informatiques IPL et Bretagne.
 
 FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres   Groupes d'utilisateursGroupes d'utilisateurs   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Echec de l'analyse syntaxique XML

 
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> Web
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
florian67



Inscrit le: 23 Déc 2013
Messages: 113

MessagePosté le: Lun 01 Oct 2018, 14:18:28    Sujet du message: Echec de l'analyse syntaxique XML Répondre en citant

Bonjour à tous,

J'ai une erreur syntaxique lors de la consommation d'un service Web que je ne m'explique pas.

Le service me retourne une simple chaîne : <hasdnc>true</hasdnc>

Ma requête HTTPGETCLOB est la suivante :
Code:
SELECT *
   FROM XMLTABLE('$result'
      PASSING XMLPARSE(
         DOCUMENT
           SYSTOOLS.HTTPGETCLOB('http://adresse-de-mon-service?articleCode=57720020&companyCode=K','')
      ) as "result"
         COLUMNS
            Dnc CHAR(10) PATH 'hasdnc'
   ) AS RESULT;


Est-ce que j'ai fait une erreur dans ma requête?

Merci d'avance.
Florian
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
cmasse
Site Admin


Inscrit le: 14 Fév 2007
Messages: 701
Localisation: Nantes

MessagePosté le: Lun 01 Oct 2018, 15:13:49    Sujet du message: XMLTABLE Répondre en citant

Chez moi, ça marche avec ce code

SELECT *
FROM XMLTABLE('$result'
PASSING XMLPARSE(
DOCUMENT
'<hasdnc>true</hasdnc>'
) as "result"
COLUMNS
Dnc CHAR(10) PATH 'hasdnc'
) AS RESULT;

le service doit retourner qqchose de plus complexe, non ?
_________________
Christian Massé (Volubis.fr)
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web de l'utilisateur
florian67



Inscrit le: 23 Déc 2013
Messages: 113

MessagePosté le: Jeu 04 Oct 2018, 08:42:11    Sujet du message: Répondre en citant

Pardon pour le retard je n'avais pas vu la répondre.

En fait j'ai remarqué qu'il retournait en plus <?xml version="1.0" encoding="UTF-8"?>

Vous pensez que ça pose problème?

Florian
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
nbonnet



Inscrit le: 11 Sep 2018
Messages: 31
Localisation: Lyon

MessagePosté le: Ven 05 Oct 2018, 16:11:46    Sujet du message: Répondre en citant

Bonjour Florian,

quel est ton message ?
Si c'est celui-ci :
Code:
Etat SQL : 2200M Code fournisseur : -16168 Message : [SQ16168] Déclaration XML non valide dans le document XML. Cause . . . . . : La déclaration XML dans le document XML ou le schéma XML est incorrecte. Il s'agit d'une erreur de type 7. Les types d'erreur sont : 1 -- Marque d'ordre d'octet non prise en charge, ordre des chaînes de déclaration non admis, majuscules obligatoires dans la déclaration, chaîne 'version=' manquante, attributs non pris en charge indiqués. 6 -- Version indiquée non prise en charge. 7 -- Codage indiqué non pris en charge ou codage interne sans correspondance avec le codage externe. 8 -- Déclaration XML non terminée. Que faire . . . : Corrigez le document XML. Renouvelez la demande.

Alors cela provient de la non correspondance entre l'UTF-8 indiqué en entête XML et le codage réel de ta valeur


Essaie de convertir en UTF-8 (taille du CLOB à adapter) :
Code:
SELECT *
   FROM XMLTABLE('$result'
      PASSING XMLPARSE(
         DOCUMENT
           cast(SYSTOOLS.HTTPGETCLOB('http://adresse-de-mon-service?articleCode=57720020&companyCode=K','') as clob(1M) ccsid 1208 )
      ) as "result"
         COLUMNS
            Dnc CHAR(10) PATH 'hasdnc'
   ) AS RESULT;


Nathanaël
_________________
Nathanaël
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
florian67



Inscrit le: 23 Déc 2013
Messages: 113

MessagePosté le: Lun 08 Oct 2018, 07:51:22    Sujet du message: Répondre en citant

Bonjour Christian, Nathanaël,

J'ai regardé un peu plus en détail et j'ai trouvé pourquoi ça met qu'il y a une erreur syntaxique.

J'ai utilisé HTTPGETCLOB mais sans faire de lecture (Exec SQL values ...).

Je reçois ça : <?xml version="1.0" encoding="utf-8"?><hasdnc>true</hasdnc>

Du coup je pense que ça vient des caractères "".

Vous pensez que c'est un problème lié au service ou plutôt un problème de conversion de caractère?

Bonne journée.
Florian
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
florian67



Inscrit le: 23 Déc 2013
Messages: 113

MessagePosté le: Jeu 03 Jan 2019, 15:14:37    Sujet du message: (sujet inconnu) Répondre en citant

Bonjour à tous,

Je ne sais pas pourquoi j'ai voulu regarder ce problème maintenant mais j'ai trouvé la solution.

Ces caractères étranges ont une signification, c'est l'indicateur d'ordre des octets (BOM). Il est dit que parfois, si le logiciel est incompatible, il est possible qu'ils s'affichent.

J'ai donc remplacer le HTTPGETCLOB par le HTTPGETBLOB (pour ne pas faire de conversion) et tout fonctionne parfaitement bien.

Merci pour votre aide.
Florian
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Volubis, le forum IBM i Index du Forum -> Web Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com

Anti Bot Question MOD - phpBB MOD against Spam Bots