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

C++ Discussion :

string and char*


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut string and char*
    Bonjour ,

    Dans mon appli je recois des messages de l'internet (message xml) comme ci dessous :



    unsigned char tab* ="<RootElement param=\"value\"><FirstElement>Some Text</FirstElement><SecondElement param2=\"something\"><Inline>Inlined text</Inline> Post-text.</SecondElement></RootElement><RootElement param=\"value\"><FirstElement>Some Text</FirstElement><SecondElement param2=\"something\"><Inline>Inlined text</Inline> Post-text.</SecondElement></RootElement>";


    A partir de ce char* je veux decouper mon message pour plusieurs de facon a avoir 1 seul message xml ,par exemple :
    ="<RootElement param=\"value\"><FirstElement>Some Text</FirstElement><SecondElement param2=\"something\"><Inline>Inlined text</Inline> Post-text.</SecondElement></RootElement><
    et puis l'envoyer vers le parseur (et ceci pour parser chaque message a part)
    et ainsi de suite......

    Est ce qu'il y a moyen de le faire ( ie le decoupage de char* en plusierus messages xml) ?
    P.S : le char* contient plusieurs messages xml
    Merci beaucoup

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Pourquoi ne pas ajouter une racine qui englobe tous les messages et envoyer tout ça à l'analyse ?

    MAT.

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut
    Citation Envoyé par Mat007 Voir le message
    Salut,

    Pourquoi ne pas ajouter une racine qui englobe tous les messages et envoyer tout ça à l'analyse ?

    MAT.
    C'est parceque j'ai besoin de parser message par message. En fait chaque message correspond a une requete/ reponse et je dois construire la requete ou la reponse.

    Donc j'ai besoin de parser chaque message a part ( contraintes du projet)

  4. #4
    Membre émérite
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Février 2004
    Messages
    644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant ERP

    Informations forums :
    Inscription : Février 2004
    Messages : 644
    Par défaut
    Tu cherches vraiment pas la simplification

    le XML-RPC est un seul message à la fois.

    Sinon, tu peux t'amuser à faire un parseur xml à la main, à moins que tu en trouves un qui accepte de travailler sur des morceaux de flux.

  5. #5
    Membre confirmé
    Inscrit en
    Septembre 2006
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 86
    Par défaut
    Citation Envoyé par swirtel Voir le message
    Tu cherches vraiment pas la simplification

    le XML-RPC est un seul message à la fois.

    Sinon, tu peux t'amuser à faire un parseur xml à la main, à moins que tu en trouves un qui accepte de travailler sur des morceaux de flux.
    C'est des messages xml venant d'une socket SSL. Certe il y a qu'un seul message xml envoyer par reponse ou requete , mais le reseaux TCP/IP peux decouper le message ou s'il y avais de retard il y aurra plusieurs messages xml dans seul paquet.

    Pour cela avant de faire le parsing, j'ai developer une fonction qui recupere les messages xml une par une de mon buffer d'entrée et de les envoyer au parser pour construire mon paquet.

    A tester ....

    Merci

  6. #6
    Membre éclairé Avatar de Biosox
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 298
    Par défaut
    hello. Si tu sais à l'avance quel est le tag "racine" (<RootElement> dans ton exemple), alors une solution serait de mettre tout ton buffer dans une string et de boucler avec:

    index = taString.find_first_of("</RootElement>")
    tu vas trouver ainsi la position de la fin de ton premier "element"
    (attention, en fait tu vas trouver la position du '<' de </RootElement>, il faut encore calucler un index2 pour trouver le '<' du prochain <RootElelement>)
    ensuite tu crée un substring a cet endroit:
    taString.substr(index2)
    ainsi la substring contiendra tous les RootElements suivants

    tu boucle jusqu'à ce qu'il n'y en ait plus.

    http://www.cppreference.com/cppstrin..._first_of.html
    http://www.cppreference.com/cppstring/substr.html

Discussions similaires

  1. [DEBUTANT] String et char, bug
    Par FinalSpirit dans le forum Débuter
    Réponses: 15
    Dernier message: 10/01/2006, 18h42
  2. Borland + sqlite (aducom) + string > 256 char = pas conte
    Par spyroux dans le forum C++Builder
    Réponses: 1
    Dernier message: 16/12/2005, 22h48
  3. Evaluation d'une variable string ou char* en C++
    Par Coelacanthe dans le forum SL & STL
    Réponses: 2
    Dernier message: 08/11/2005, 09h27
  4. Convertir String en Char: comment?
    Par nmathon dans le forum Langage
    Réponses: 2
    Dernier message: 22/08/2005, 20h58
  5. [Debutant(e)]limitation du String 65536 char
    Par srane dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 28/05/2004, 23h42

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