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

Langage Delphi Discussion :

probleme XPath, j'obtiens pas ma données ?


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut probleme XPath, j'obtiens pas ma données ?
    Bonjour à tous,

    j'ai une question sur XML et XPath

    La structure du fichier XML est :
    /WORLDPATENTDATA/FAMILY/MEMBER/BIBLIO/SDOBI/B542[@TYPE=''TI'']

    en gros, j'ai la publication Date qui fonctionne mais j'arrive pas à avoir
    le titre TI, il est toujours vide,
    pourtant mes chemins sont ok :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
              // Boucle sur tous les MEMBER
              nodeMemberList := XPathSelect(XML1.DocumentElement, '/WORLDPATENTDATA/FAMILY/MEMBER');
              for iNodeMember:=0 to nodeMemberList.Length-1 do
              Begin
     
    CurrentPN:=Trim(nodeMemberList.Item[iNodeMember].Attributes.GetNamedItem('Pn
    _e').Text);
                 if CurrentPN='EP1602544" then
                 Begin
     
    s:=nodeMemberList.Item[iNodeMember].Attributes.GetNamedItem('Pd').Text;
                   PR.PublicationDate:=EncodeDate(StrToInt(Copy(s, 1, 4)),
    StrToInt(Copy(s, 5, 2)), StrToInt(Copy(s, 7, 2)));
     
                  nodeList := XPathSelect(nodeMemberList.Item[iNodeMember],
    '/MEMBER/BIBLIO/SDOBI/B542[@TYPE=''TI'']');
                  if nodeList.Length>0 then
    PR.Title:=UpperCase(nodeList.Item[0].Text);
     
                 End;
              end;
    Et par contre si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
              nodeMemberList := XPathSelect(XML1.DocumentElement,
    '/WORLDPATENTDATA/FAMILY/MEMBER/BIBLIO/SDOBI/B542[@TYPE=''TI'']');
    là cela foncitonne bien.

  2. #2
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Tu utilises quel parser pour travailler avec Xpath ? msxml, omniXML ?
    Je ne vois pas bien ce que tu veux extraire comme donnée, mais à mon avis, ton erreur devrait se situer sur cette requête
    /MEMBER/BIBLIO/SDOBI/B542[@TYPE=''TI'']
    Si je comprends plus ou moins, tu sélectionnes les noeuds /WORLDPATENDATA/FAMILY/MEMBER.

    tu effectues ta seconde recherche sur un de ces noeuds, donc pour moi ta requêtes Xpath devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ./BIBLIO/SDOBI/B542[@TYPE="TI"]
    , pour signaler que tu veux faire ta recherche à partir du noeud courant (./), au lieu de commencer à la racine (/)

    Essaie et tiens-moi au courant

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Bonsoir Big,

    hélas ça ne marche pas non plus, c'est à me taper la tête contre un mur !!!
    Ha oui désolé, j'utilise OmniXML.

    Dans le code donné plus haut, remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if CurrentPN='EP1602544' then
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if CurrentPN='CA2481789' then
    Et là aussi, impossible d'extraire le TITRE (B542) du brevet CA2481789
    Vois-tu où il pourrait avoir une erreur ??

    D'avance merci pour ton aide

    voici un de mes fichiers XML :
    <WORLDPATENTDATA>
    <FAMILY Seed="CA2481789 " Seed_Format="E" Seed_Type="PN" Desc_lng="ENG" Legal="YES" Format="DOCDB" Date_Migr="00010101" Truncated_Family="NO">
    <MEMBER Pn=" CA 2481789A1" Pd="20050408" Ap=" CA 2481789A " Pn_e="CA2481789 ">
    <PRIORITY Date="20031008"> US 50918003P </PRIORITY>
    <BIBLIO Seed="CA2481789">
    <SDOBI>
    <B111EP DATE="20050408 ">CA2481789</B111EP>
    <B131EP>A1</B131EP>
    <B211EP DATE="20041008">CA20042481789</B211EP>
    <B311EP DATE="20031008">US20030509180P</B311EP>
    <B510 TYPE="IPC">B64C25/56; B60R21/16; B60R21/32; B64C1/34; B64D25/00; G01S1/02</B510>
    <B510 TYPE="CI">B60R21/16; B64C1/00; B64C25/00; B64D25/00; G01S1/00</B510>
    <B510 TYPE="AI">B60R21/16; B64C1/34; B64C25/56; B64D25/00; G01S1/02</B510>
    <B542 TYPE="TI">FLOTATION DEVICE FOR SMALL AIRPLANE</B542>
    <B570EP>An emergency flotation device for crashed small airplanes which can be retrofited on most small airplanes as well as come preinstalled on new small airplanes, is self contained in a small container; has several independent triggering means; and has a visual as well as an RF beacon system integrated within to call for rescue.</B570EP>
    <B711EP>SIMARD MARTIN (CA)</B711EP>
    <B721EP>SIMARD MARTIN (CA)</B721EP>
    </SDOBI>
    </BIBLIO>
    </MEMBER>
    <MEMBER Pn=" US 2005077426A1" Pd="20050414" Ap=" US 96180104A " Pn_e="US2005077426 ">
    <PRIORITY Date="20031008"> US 50918003P </PRIORITY>
    <PRIORITY Date="20041008"> US 96180104A </PRIORITY>
    <BIBLIO Seed="US2005077426">
    <SDOBI>
    <B111EP DATE="20050414 ">US2005077426</B111EP>
    <B131EP>A1</B131EP>
    <B211EP DATE="20041008">US20040961801</B211EP>
    <B311EP DATE="20041008;">US20040961801</B311EP>
    <B311EP DATE="20031008">US20030509180P</B311EP>
    <B510 TYPE="EPC">B64D25/18</B510>
    <B510 TYPE="IPC">B64C25/54</B510>
    <B510 TYPE="CI">B64D25/00</B510>
    <B510 TYPE="AI">B64D25/18</B510>
    <B542 TYPE="TI">Flotation device for small airplanes</B542>
    <B570EP>An emergency flotation device for crashed small airplanes which can be retrofited on most small airplanes as well as come preinstalled on new small airplanes, is self contained in a small container; has several independent triggering means; and has a visual as well as an RF beacon system integrated within to call for rescue.</B570EP>
    <B721EP>SIMARD MARTIN (CA)</B721EP>
    </SDOBI>
    </BIBLIO>
    </MEMBER>
    </FAMILY>
    </WORLDPATENTDATA>

  4. #4
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Je vais devoir faire des tests sur ton fichier xml, mais je ne pourrais pas le faire avant demain soir. Je te tiens au courant dès que j'ai du nouveau

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Merci beaucoup,

    si je trouve le pourquoi du comment je poste un message illico.

    Merci encore
    Bruno

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Bien ben la seule méthode que j'ai trouvé a été de créer un nouveau XMLDoc temporaire et de lui affecter le résultat de mon premier XPathSelect.

    Ce n'est pas trés propre je trouve, mais cela dit cela fonctionne, j'ai posté un message sur le Forum OmniXML pour leur indiquer mon problème.

    voili, voilou

    Bruno

  7. #7
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Au lieu de créer un objet XMLDoc, essaies ceci, c'est plus léger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    var xmlDoc: IXMLDocument;
    begin
    XMLDoc := CreateDocument; //ou CreateXMLDocument, je n'ai pas delphi sous les yeux
    ...
    end;
    C'est comme ça que OmniXML préconise de travailler.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Points : 199
    Points
    199
    Par défaut
    Salut Big,

    En fait le '.' n'était pas supporté par la verison de OmniXML, ils viennent de faire un update sur leur prog (voir forum omni).

    et hop maintenant ça marche !!!

    Merci pour ton aide.

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

Discussions similaires

  1. [AC-2003] Probleme Requete ne prend pas en compte toute les données
    Par Ardiden31 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 19/04/2012, 10h39
  2. Menu - probleme sous IE et pas sous FF
    Par Pepito dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 10/11/2005, 15h26
  3. [ORA-01403] Pas de données trouvées ; et alors ?
    Par szdavid dans le forum Oracle
    Réponses: 6
    Dernier message: 02/08/2005, 11h20
  4. Probleme pour créer un base de données...
    Par _matt_44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 03/06/2005, 14h36
  5. Réponses: 4
    Dernier message: 15/01/2005, 16h05

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