Précédent   Forum des professionnels en informatique > Environnements de développement > Delphi > Composants VCL
Composants VCL Utilisation des différents composants VCL (Visual Component Library)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/02/2012, 17h20   #1
Futur Membre du Club
 
Inscription : août 2005
Messages : 138
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 138
Points : 15
Points : 15
Par défaut exploitation d'un fichier XML

Bonjour,

Question sur le traitement d'un fichier XML.
Je désire dans l'exemple ci après modifier et ou ajouter les ligne keyvalue.

Code xml :
1
2
3
4
5
6
7
<?xml version="1.0" encoding="utf-8"?>
<HotFolder name="Vilatis" description="">
  <JobSetting>
    <KEYVALUE Key="Chapters" Value="" KeyDisplayValue="" LocDisplayValue=""/>
    <KEYVALUE Key="SubsetFinishing" Value="" KeyDisplayValue="" LocDisplayValue=""/>
  </JobSetting>
</HotFolder>

J'utilise le composant XMLDocument1

Code :
1
2
Noeud := XMLDocument1.ChildNodes['HotFolder'].ChildNodes['JobSetting'];
showmessage( Noeud.Text);
L'élément 'Jobsetting' ne contient pas un noeud texte unique

Merci d'avance pour votre aide.

Laurent
bremer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2012, 17h42   #2
Expert Confirmé Sénior
 
Avatar de ShaiLeTroll
 
Homme
Développeur C++\Delphi
Inscription : juillet 2006
Messages : 7 832
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 31
Localisation : France

Informations professionnelles :
Activité : Développeur C++\Delphi
Secteur : High Tech - Électronique et micro-électronique

Informations forums :
Inscription : juillet 2006
Messages : 7 832
Points : 10 532
Points : 10 532


en mettant [CODE=XML ] (sans l'espace), cela colorise ton XML !

Le Message est pourtant très clair !
la réponse est dans ton XML, suffit d'ouvrir les yeux et

Ensuite, <JobSetting> n'a pas de Text, il a des sous-noeud <KEYVALUE ...>, tu confonds avec

Code xml :
1
2
3
<JobSetting>
  Bonjour
</JobSetting>
Avec ce XML simple, tu pouvais utiliser Text mais pas avec
Code xml :
1
2
3
<JobSetting>
  <Bonjour />
</JobSetting>


tu dois de nouveau parcourir les ChildNodes['JobSetting'].ChildNodes et lire Attributes[] !
__________________
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !

L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Parisien ! Dites NON à la VO ST au Cinéma !
Soit VF Soit VO sans sous-titre
ShaiLeTroll est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/02/2012, 09h28   #3
Futur Membre du Club
 
Inscription : août 2005
Messages : 138
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 138
Points : 15
Points : 15
Merci pour ce retour et j'ouvre grands les yeux.

La manipulation du XML avec delpgi est une première pour moi.

JE pensais pouvoir les manipuler comme un fichier ini.

Par contre un exemple serait le bien venu sur l'utilisation du attribute.

Cordialement,

laurent BREMER
bremer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 18h02   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2008
Messages : 62
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : avril 2008
Messages : 62
Points : 12
Points : 12
salut
moi j'ai utilisé XMLPARSER composant téléchargé sur http://www.destructor.de/xmlparser/

regarde avec ce composant, que j'ai trouvé très simple d'utilisation.

si tu as besoin d'un exemple avec dit moi.
Chayanne47 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/02/2012, 18h34   #5
Futur Membre du Club
 
Inscription : août 2005
Messages : 138
Détails du profil
Informations forums :
Inscription : août 2005
Messages : 138
Points : 15
Points : 15
Merci je regarde cela
bremer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/02/2012, 16h55   #6
Membre chevronné
 
Inscription : novembre 2007
Messages : 1 154
Détails du profil
Informations personnelles :
Âge : 50

Informations forums :
Inscription : novembre 2007
Messages : 1 154
Points : 659
Points : 659
Envoyer un message via ICQ à Papy214
Code :
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
procedure TForm1.btnChargerClick(Sender: TObject);
var
  xml: IXMLDocument;
begin
  if Trim(redt1.Lines.Text) <> '' then
    xml := LoadXMLData(redt1.Lines.Text)
  else
    xml := LoadXMLDocument('D:\test.xml');
  redt1.Lines.Text := xml.XML.Text;
end;
 
procedure TForm1.btnLireClick(Sender: TObject);
var
  xml: IXMLDocument;
  nodeJobSetting, nodeKEYVALUE: IXMLNode;
begin
  if Trim(redt1.Lines.Text) = '' then
  begin
    ShowMessage('Aucun fichier disponible');
    Exit;
  end;
 
  xml := LoadXMLData(redt1.Lines.Text);
 
  nodeJobSetting := xml.DocumentElement.ChildNodes.Nodes['JobSetting'];
  if Assigned(nodeJobSetting) then
  begin
    nodeKEYVALUE := nodeJobSetting.ChildNodes.First;
    while Assigned(nodeKEYVALUE) do
    begin
      ShowMessage(nodeKEYVALUE.AttributeNodes.Nodes['Key'].NodeValue);
      nodeKEYVALUE := nodeKEYVALUE.NextSibling;
    end;
  end;
 
end;
 
procedure TForm1.btnAjouterClick(Sender: TObject);
var
  xml: IXMLDocument;
  nodeJobSetting, nodeKEYVALUE: IXMLNode;
begin
 
  if Trim(redt1.Lines.Text) = '' then
  begin
    ShowMessage('Aucun fichier disponible');
    Exit;
  end;
  xml := LoadXMLData(redt1.Lines.Text);
 
  nodeJobSetting := xml.DocumentElement.ChildNodes.Nodes['JobSetting'];
  if Assigned(nodeJobSetting) then
  begin
    nodeKEYVALUE := nodeJobSetting.AddChild('KEYVALUE');
    nodeKEYVALUE.Attributes['key'] := 'test01';
  end;
  xml.SaveToFile('d:\test1.xml');
end;
 
procedure TForm1.btnModifierClick(Sender: TObject);
var
  xml: IXMLDocument;
  nodeJobSetting, nodeKEYVALUE: IXMLNode;
begin
 
  if Trim(redt1.Lines.Text) = '' then
  begin
    ShowMessage('Aucun fichier disponible');
    Exit;
  end;
  xml := LoadXMLData(redt1.Lines.Text);
 
  nodeJobSetting := xml.DocumentElement.ChildNodes.Nodes['JobSetting'];
  if Assigned(nodeJobSetting) then
  begin
    nodeKEYVALUE := nodeJobSetting.ChildNodes.First;
    while Assigned(nodeKEYVALUE) do
    begin
      nodeKEYVALUE.Attributes['Key'] := 'MODIFIE PAR MOI';
      nodeKEYVALUE := nodeKEYVALUE.NextSibling;
    end;
  end;
  xml.SaveToFile('d:\test2.xml');
end;
Papy214 est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h40.


 
 
 
 
Partenaires

Hébergement Web