begin process at 2010 03 18 05:11:15
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Base de données

 > 

Autre

 > 

Comment savoir si un Node XML existe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment savoir si un Node XML existe

mercredi 14 juin 2006 à 15:46:14 | Comment savoir si un Node XML existe

fjohnny

Membre Club

Bonjour,

Voilà sur ma version de delphi (7) le composant TXMLDocument n'existe pas. N'ayant rien touvé sur le net, je suis en train de développer un composant qui pourrait accomplir au moins les fonctions basique sur le XML : Lecture, écriture, existence d'un noeud etc...
Pour l'instant j'arrive plus ou moins à savoir si un noeud existe ou pas. Mais ma fonction (je le sais bien)  est très mal developpé. Ca fait plusieurs jours que je planche dessus, mais j'arrive pas à avancer. Alors si vous avez des idées des suggestions, des pistes.. je suis preneur.

Explications de la fonction :

Je pars du principe que le fichier XML trace une arborescence comme dans l'explorateur et par conséquence on peut la nommer de la même façon avec un chemin ou chaque balise serait séparé par des '\'.

Pour éviter d'alourdir mon post je  ne mettrais pas les fonctions annexes, juste une petite explication sur celles-ci:

LireFichierTexte : Renvoie un TStringList contenant le fichier XML dans son entier
fFichierXML : Propriété du composant (que je suis en train de developpe) qui contient sous la forme d'un String le chemin du fichier XML
DecomposeChemin : Met dans un TStringList (Ligne/ligne) les balises recontré dans le chemin.
Contienttexte: C'est juste une encapsulation de la fonction PosEx pour qu'elle renvoie un booleen.



Function TJTXML.ExisteNode (Chemin:String): Boolean;
Var Temp:TStringList; {Sera utiliser pour charger le fichier XML en mémoire}
    Balises : TStringList; {Va servir à stocker le chemin élément par élément}
    i,j,l,m: Integer; {l : Début intervalle du Node courant
                       m : Fin Intervalle du Node courant
                       i et j sont de variable pour les boucles FOR}
    Trouve: Boolean; {Indiquera si on a trouvé le commencement du Node courant
                      Vérification qui est utile si le fichier contient une
                      erreur et qu'il y a la balise de fin sans la balise de
                      début!}
begin
Try
  Try
  Result:= False;    //Initialisation du résultat
  if notFileExists(fFichierXML) then Exit; {Ca risque pas d'exister !}
  {Chargement et traitement du fichier}
  Temp := LireFichierTexte(fFichierXML);
  {Découpage du chemin}
  Balises:=DecomposeChemin(Chemin);
  l:=0; m:=Temp.Count-1;{Positionnement de Départ}
  For j:=0 to Balises.Count -1 do
    begin
      {Recherche du 1er Node ensuite à l'intérieur de cette intervalle délimité
      par celui-ci on cherche le deuxième Node etc... A la fin on vérifie que
      c'est le dernier et si il est trouvé, c'est que le chemin existe sinon il
      a été positionné à False au début de la procédure }

      Trouve:=False;
      For i:=l to m do
        begin
          if ContientTexte (LowerCase (Temp.Strings[i]),LowerCase ('<'+Balises.Strings [j]+'>')) then
            begin
              Trouve:=True; l:=i;  //Position de la balise nième
            end;
          if (Trouve and ContientTexte (LowerCase (Temp.Strings[i]),LowerCase ('</'+Balises.Strings [j]+'>'))) then
            begin
              if j=Balises.Count-1 then Result:=True; {Si c'est la dernière tout est trouvé et on va s'arrêter là}
              m:=i;Break//Position de la fermeture de la balise nième
            end;
        end;
        If not Trouve then Break; {Si la néime balise n'a pas été trouvé ne pas
                                  chercher la n+1 !}
    end; //End du For j
  Except
    Result:= False;
  end;
Finally
  Temp.free; Balises.free; //Libération des TStringList
end;
end;


Merci d'avance de votre aide.

fjohnny



Cette discussion est classée dans : fichier, end, xml, chemin, node


Répondre à ce message

Sujets en rapport avec ce message

afficher une image dans une zone Timage [ par jeanjeandada ] Bonjour, Je suis débutant sur Delphi mais j'ai regardé pas mal de tutorial...Voici mon probléme :Je souhaite afficher une image dans une zone Timage s Interface Delphi 6 et BDD HF7 (windev) [ par simplyDje ] Bonjour, Je suis actuellement en train de travailler sur un projet devant réaliser l'interface entre une base de donnée HF7 (sous windev) et l'utili XML AVEC DELPHI 5 [ par guy jeuniaux ] Bonjour,Je viens encore une fois solliciter votre aide. J'ai besoin de récupérer une valeur dans un fichier XML.J'ai cherché pendant des heures sur le Lecture fichier XML vers une ou plusieurs classes [ par furax13 ] Soit le fichier xml suivant :      0   <coefficient nom= Syntaxe XML [ par grandyaka54 ] Bonjour, Je suis en train de développer une petite application sur Delphi. Je sais lire et écrire dans un fichier xml en utilisant le composant IXMLDo faire glisser un fichier sur une icone en recuperant le chemin [ par shell13010 ] Bonjour a tous,J'aimerais si c'est possible de recuperer le chemin d'un fichier en le faisant glisser sur l'icone de mon programme pour qu'il puisse r Test présence noeud XML [ par didou2dek ] 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 Error E/S 32 sur ecriture et suppresion [ par te56350 ] slt tt le mondej'Ai besoin d'une solution pour mon projet en cour SVPMon projet gère des comptes utilisAteurs Et qu'An j'enregistre des comptes çA fon Génération d'un fichier XML avec Delphi 2009 [ par littlebolide ] Bonjour,Par la force des choses je dois me remettre dans la programmation (Delphi 2009) pour ma société (ventes de voitures de collection) dans le cad Parcours d'un fichier XML [ par TrustNoOne ] Bonjour à tous, J'ai un petit soucis pour la lecture d'un fichier XML. J'ai effectué des modifs en long en large en travers mais rien n'y fait. Après


Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,484 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales