IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

APIs XML Discussion :

[XML] Parser une chaine de caractère XML


Sujet :

APIs XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut [XML] Parser une chaine de caractère XML
    Bonjour,
    Voici mon problème :

    Je sais me débrouiller pour parser du XML contenu dans un fichier du type "file.xml" (j'utilise Xercès) avec SAX ou DOM... peu importe en fait !

    Mais je ne sais pas comment m'y prendre dès qu'il s'agit de parser ce MEME MESSAGE XML mais contenu cette fois dans une chaine de charactères (ou string) au lieu du fichier "file.xml"

    Une idée svp ?


    Edit : J'allais oublier : j'utilise Xercès-C, je code en C++.
    Merci

  2. #2
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    As-tu regarder du côté du forum C++ ... ? Je pense qu'il s'agit simplement d'une question de flux d'entrée : Clavier, Fichier, Chaîne de caractère, ... Peut importe la source, mais il faut pointer sur la bonne !

    Je ne peux pas t'aider sur la syntaxe C++, mais regarde de ce côté !
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  3. #3
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Toute API de manipulation XML digne de ce nom doit avoir une fonction "loadXML" qui prend en paramètre non pas un nom de fichier mais une chaine de caractères représentant le document.
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé ma solution en bidouillant avec les InputSourceMemBuf

  5. #5
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Tu peux nous en faire profiter, ça m'intéresse !
    Merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 65
    Points : 36
    Points
    36
    Par défaut
    Bon ben j'ai finit par trouver (suffisait juste de chercher un peu)

    Xerces possède un objet XercesDOMParser, qui permet de créer un parseur.
    La méthode XercesDOMParser::parse(var) permet de récupérer le contenu de plusieurs manières, dont les deux suivantes :
    - Si var est une URL, il va parser le fichier.
    - Si var est un MemBufInputSource, il va parser un buffer.

    C'est ce dernier point qui nous intéresse. Il suffit en fait d'initialiser le MemBufInputSource avec une chaine de caractères contenant les données XML. Personellement, je l'ai initialisé comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	MemBufInputSource * IS = new MemBufInputSource((const XMLByte *)xmlData, strlen(xmlData)*sizeof(char), variableZarbi, false );
    avec xmlData : un char * qui repésente mes données XML, variableZarbi : ??? je sais juste qu'il faut du char *, false pour ne pas être responsable de la délétion du buffer.

    Voilou.

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bon bah finalement tu as trouvé tout seul avant que je ne te poste mon code.
    M'enfin comme promis, le voici :
    SIMPLEPresenceMessage* SIMPLEPresenceParser::parse(string xmlstr)
    {
    SIMPLEPresenceMessage* XMLMsg = new SIMPLEPresenceMessage();

    SAXParser sparser;

    sparser.setDoValidation(false);

    SIMPLEPresenceHandler* handler = new SIMPLEPresenceHandler(XMLMsg);

    sparser.setDocumentHandler(handler);

    const XMLByte * xml = (XMLByte *) xmlstr.c_str();

    MemBufInputSource is (xml, xmlstr.size(), "fakeId");

    sparser.parse(is);

    delete handler;
    handler = 0;

    return XMLMsg;
    }

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 47
    Points : 36
    Points
    36
    Par défaut
    Bonjour,
    sauriez vous faire la meme chose sous vb6?
    en gros ,je recois d'un service web une chaîne de caractaires que je souhaite
    transformer en document xml.merci

  9. #9
    Membre actif Avatar de femtosa
    Inscrit en
    Juin 2002
    Messages
    253
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 253
    Points : 222
    Points
    222
    Par défaut
    Citation Envoyé par alain.couthures
    Toute API de manipulation XML digne de ce nom doit avoir une fonction "loadXML" qui prend en paramètre non pas un nom de fichier mais une chaine de caractères représentant le document.
    Que dire de plus ... ?

    T'as chaîne de caractère représente déjà des données au format XML ? Aimerai-tu représenter ces données au format XML ?
    "L'expérience est le seul livre que les imbéciles savent lire ... !"

    Qui à dit cela ? Moi je n'sais pas !
    Mais en tout cas, je l'applique au pas !

  10. #10
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Il y a bien un loadXML en VB
    pour le reste as tu vu ce tuto ?
    http://khany.developpez.com/tutoriel/xml/

  11. #11
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    En VB6, on peut utiliser l'objet COM MSXML téléchargeable dans sa dernière version sur le site M$ qui est au même niveau technique que .Net en terme d'analyse XML.
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Parser une chaine String en XML
    Par robocop2776 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 01/05/2011, 17h59
  2. [XML] Analyse de code XML dans une chaine de caractères
    Par yannick29000 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/07/2010, 15h46
  3. [DOM XML] Lecture du contenu XML dans une chaine de caractères
    Par diakite4 dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 21/05/2008, 20h48
  4. Parser une chaine de caractère
    Par Nasky dans le forum C++
    Réponses: 7
    Dernier message: 04/12/2006, 19h37
  5. Réponses: 3
    Dernier message: 01/02/2006, 18h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo