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

Delphi Discussion :

lire un fichier xml


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut lire un fichier xml
    Bonjour,

    j'ai delphixe7

    J'ai un fichier xml avec cette structure (que j'ai coupé):
    Code xml : 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
    <?xml version="1.0" encoding="UTF-8"?>
    <jo:ann xmlns:jo="http://journal-officiel/XML/3.2.5">
    <HTML><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE html
      PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" lang="FR">
       <head>
          <style type="text/css">.fr-h4 { font-weight: 700 !important; margin: 0.5rem 0 0.5rem 0rem!important; font-size: 1.4rem !important; line-height: 2rem !important; } .fr-h5, .fr-h5 + .fr-text--bold { font-weight: 700 !important; margin: 0.5rem 0 0.5rem 0rem !important; font-size: 1.3rem !important; line-height: 2rem !important; } .section { padding: 6px 6px 6px 36px; } .fr-text--bold { font-weight: bold; } .center { text-align: center; }
                    </style>
          <title>Avis informatif - Avis n° 1A du 08/09/2023</title>
          <meta name="subject" content="Avis informatif"/>
          <meta name="author"
                 content="Direction de l’information légale "/>
          <meta name="description"
                 content="Avis informatif - Avis n° 1A du 08/09/2023 sur le site "/>
       </head>
    </HTML>]]>
    </jo:ann>

    comment puis je lire le node html ?
    Si je n'ai pas le namespace, j'y arrive, mais avec il ne me le trouve pas


    j'ai ce code
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    function TMainForm.TestIfNodeExist(var aXmlDoc : TXMLDocument;aPATHNode : string) : boolean;
    var aLst : TStringList;
      tmpnode : IXMLNode;
      i : Integer;
     
    begin
      tmpnode :=nil;
      result:= True;
      aLst := TStringList.Create;
      try
        aLst.Delimiter := ';';
        aLst.StrictDelimiter := True;
        aLst.DelimitedText := aPATHNode;
        try
          for i:= 0 to aLst.Count-1 do
          begin
            if tmpnode = nil then
            begin
              if aXmlDoc.ChildNodes.FindNode(aLst.Strings[i]) = nil then
              begin
                Result := False;
                exit;
              end;
              tmpnode :=aXmlDoc.ChildNodes.Nodes[aLst.Strings[i]];
            end
            else
            begin
              if tmpnode.ChildNodes.FindNode( aLst.Strings[i]) = nil then
              begin
                Result := False;
                exit;
              end;
                tmpnode.ChildNodes.Nodes[aLst.Strings[i]];
            end;
          end;
        except
          on ex: Exception do
          begin
            result := false;
            AddToErrorLog('TestIfNodeExist - '+aPATHNode+' : '+ex.Message);
          end;
        end;
      finally
        aLst.Free;
      end;
    end;
     
    if (TestIfNodeExist(XMLDocument1,'jo:ann;HTML'))  then
    ...


    merci

  2. #2
    Membre éclairé
    Avatar de Higgins
    Inscrit en
    Juillet 2002
    Messages
    539
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 539
    Par défaut
    Normalement, un simple code comme celui-ci devrait suffire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
          leFichierXML:= TXMLDocument.Create(Application);
          leFichierXML.DOMVendor := getDOMVENDOR('MSXML');
          leFichierXML.loadfromfile(chemincompletdufichier);
          lenoeudHTML:=leFichierXML.ChildNodes.Nodes['HTML'];

  3. #3
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    Non, toujours pareil
    le namespace pose probleme je pense
    ou le <![CDATA[

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    le <![CDATA[ encapsule tout jusque ]]>, donc le contenu n'est pas vu comme du XML mais comme une chaîne
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre confirmé
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    188
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 188
    Par défaut
    Oui je comprends bien, mais sans le namespace tout se lit tres bien

    <jo:ann xmlns:jo="http://boamp.journal-officiel.gouv.fr/XML/3.2.5">
    devient <ann>

    et a la fin
    </ann>

    et tout est ok,

    c'est assez déroutant

  6. #6
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 091
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 091
    Par défaut
    C’est moi, ou il manque une fin de balise « </html>, entre les 2 lignes :

    ?

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

Discussions similaires

  1. Créer et lire un fichier xml
    Par Bruno1905 dans le forum C++Builder
    Réponses: 14
    Dernier message: 13/06/2007, 11h11
  2. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  3. [DOM XML] Lire un fichier xml
    Par axel-erator dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/12/2005, 22h36
  4. lire un fichier xml
    Par stephanie5 dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/11/2005, 16h34
  5. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52

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