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

XMLRAD Discussion :

Problème avec XMLCursor


Sujet :

XMLRAD

  1. #1
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut Problème avec XMLCursor
    Bonjour,

    Le DOM microsoft me fait des misères, ou alors peut-être suis-je à l'ouest ?

    voici un code de test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TForm1.Button1Click(Sender: TObject);
    var
     DescXML,SearchNode,CurrentNode  : IXMLCursor;
    begin
      DescXML := TXMLCursor.Create;
      CurrentNode := DescXML.AppendChild('TXT','');
      CurrentNode := CurrentNode.AppendChild('PS','');
      Memo1.Lines.Text := DescXML.XML;
      showmessage('Recherche...');
      SearchNode := DescXML.Select('TXT/PS');
      SearchNode.AppendChild('P', 'toto');
      Memo1.Lines.Text := DescXML.XML;
    end;
    L'instruction SearchNode.AppendChild('P', 'toto'); déclenche une exception : "TXMLCursor.AppendChild - EOF" et je vois pas comment je peux ajouter autrement un noeud pour aboutir à la structure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <TXT>
      <PS>
        <P>toto</P>
      </PS>
    </TXT>
    j'ai pas bu pourtant...

    ;-) Sylvain

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Autant pour moi, j'ai bafouillé avec XPath,
    c'était Select('/TXT/PS') au lieu de Select('TXT/PS')...

    Sylvain

  3. #3
    Membre à l'essai
    Inscrit en
    Janvier 2003
    Messages
    18
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 18
    Points : 20
    Points
    20
    Par défaut
    Bonjour,

    j'ai tester ton code et en plaçant un "/" devant TXT cela à marcher chez moi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SearchNode := DescXML.Select('/TXT/PS');
    essayes pour voir



    OUPS! trop tard !

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    Merci en tout cas !

    Faut dire que je vérifie la plupart de mes requêtes XPath avec XMLSpy (menu XML/Evaluate XPath) et ce malin de XMLSpy m'affichait le bon résultat sans le / initial.
    Bon à savoir...

    Sylvain

  5. #5
    RDM
    RDM est déconnecté
    Membre émérite

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 424
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 424
    Points : 2 927
    Points
    2 927
    Par défaut
    de manière général il faut que tu testes après un SELECT si le résultat n'est pas a EOF car ca veut dire que le select n'a pas réussi a trouver d'element correspondant a ton critère.

    Le noeud racine est un cas particulier. DescXML pointe deja sur le noeud racine TXT donc forcément en faisant TXT/PS il ne trouve pas de TXT sous la racine TXT

    pour résumer ce qui se passe:
    DescXML := TXMLCursor.Create;
    DescXML.AppendChild('TXT','');

    après ca on a l'etat suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    / <-- racine DOM du dcoument
      <TXT> <-- DescXML 
      </TXT>

  6. #6
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2002
    Messages
    520
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 520
    Points : 1 446
    Points
    1 446
    Par défaut
    il faut que tu testes après un SELECT si le résultat n'est pas a EOF
    Merci pour le tip, je cherchais justement un moyen.

    thanks again,

    Sylvain

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

Discussions similaires

  1. VC++ Direct3D8, problème avec LPD3DXFONT et LPD3DTEXTURE8
    Par Magus (Dave) dans le forum DirectX
    Réponses: 3
    Dernier message: 03/08/2002, 11h10
  2. Problème avec [b]struct[/b]
    Par Bouziane Abderraouf dans le forum CORBA
    Réponses: 2
    Dernier message: 17/07/2002, 10h25
  3. Problème avec le type 'Corba::Any_out'
    Par Steven dans le forum CORBA
    Réponses: 2
    Dernier message: 14/07/2002, 18h48
  4. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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