Test présence noeud XML

Signaler
Messages postés
47
Date d'inscription
lundi 9 septembre 2002
Statut
Membre
Dernière intervention
16 avril 2015
-
Messages postés
47
Date d'inscription
lundi 9 septembre 2002
Statut
Membre
Dernière intervention
16 avril 2015
-
Bonjour à tous, je suis en train de coder une appli me permettant de recuperer des valeurs d'un fichier XML, cependant je bloque sur une fonction que je ne connais pas.
Je voudrai pouvoir tester la présence du noeud 'Screen' car il n'existe pas dans tous mes fichiers.
Ex : j'ai un fichier XML comme ceci:
<Show>
1123-251-25
test
<Screen>7199834</Screen>
etc...
par moment je reçois des fichiers qui ne possèdent pas le noeud Screen et du coup me bloque mon appli, ma question est comment vérifier la présence de ce noeud avant d'exploiter le fichier.
merci d'avance pour votre aide
didou

4 réponses

Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Si tu ne nous donnes pas la méthode et le code utilisé pour parcourir ton fichier XML, personne ne pourra t'aider.

8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
47
Date d'inscription
lundi 9 septembre 2002
Statut
Membre
Dernière intervention
16 avril 2015

Bonjour en fait voila le bout de code que j'utilise je lis mon fichier xml et l'insere dans une base, mon pb est que sur certain fichier lorsque le tag 'screen' existe ça marche, sur d'autres fichiers si le tag n'existe pas le prog plante !!
je veux juste parcourir le fichier verifier si le tag existe

code:
fichierxml:=TXMLDocument.Create(self);
fichierxml.LoadFromFile(appli.FileName);
file:=GetShowPlaylist(fichierxml);
unstream:=TStringstream.Create('');
file.OwnerDocument.SaveToStream(unstream);
SQL.SQLInsert.Clear;
SQL.SQLInsert.Add('insert into base(nomfichier,contenu,screen)');
SQL.SQLInsert.Add('values ('+quotedstr(file.id)+',');
SQL.SQLInsert.Add(quotedstr(unstream.DataString)+',');
SQL.SQLInsert.Add(quotedstr(inttostr(file.Screen))+');');
SQLtempo.Insert;
SQLtempo.Post;
file.Free;
unstream.Free;

voila donc comment verifier la presence de 'screen' pour que je l'insere en base s'il est présent ou que j'insere '' s'il n'existe pas .

merci

didou
Messages postés
4297
Date d'inscription
samedi 19 janvier 2002
Statut
Modérateur
Dernière intervention
9 janvier 2013
31
Attends : à part l'appel à LoadFromFile, je ne vois pas de manipulation ou de vérification de l'existence de nœud. A moins que cette partie soit cachée dans GetShowPlayList.

Et si le nœud "screen" n'existe pas, que dois-tu faire dans ce cas ?

PS : si tu ne nous donnes pas un minimum de code, alors donnes-nous ton adresse IP et un accès VNC sinon on ne peux pas deviner ce que tu as fait jusqu'ici . A moins qu'on débarque tous chez toi

8000 Lévriers 'galgos' par an sont torturés et massacrés en Espagne
May Delphi be with you

Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
Messages postés
47
Date d'inscription
lundi 9 septembre 2002
Statut
Membre
Dernière intervention
16 avril 2015

S'il n'existe pas dans je ne l'insere pas dans la base, je ne comprends pas ce que je dois vous donner de plus le fichier xml ressemble a celui que j'ai mis tout en haut je le charge, le parcours puis insere les champs dans ma base tel que :
champ text : file.annotationtext
champ id : file.id
champ screen : file.screen

mais ce "screen" n'est pas present dans tous les fichiers xml que je reçois donc quand j'insere en base si 'screen' n'est pas présent j'ai une erreur dans l'insertion je veux donc juste verifier la presence de ce tag ou noeud je ne sais pas trop comment l'appeler, avant d'inserer quoi que ce soit

didou