Bonjour,

J'aimerais comprendre la lecture et l'écriture au format XML.

Je pars d'une donnée dans un champs Memo de ce type
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<?xml version="1.0" standalone="yes"?>
<docs><datas/></docs>

le but étant d'obtenir ce genre de chose
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" standalone="yes"?>
<docs><datas>
<doc Tlien="0" unc="C:\xxxxx\truc.txt" name="truc.txt"/>
<doc Tlien="0" unc="C:\xxxxx\andouille.xls" name="andouille.xls"/>
....
</datas></docs>

Tout d'avord j'ai essayé de lire l'imformation, par exemple essayé de récupérer la valeur de unc

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
Noeud := XmlDoc.DocumentElement.ChildNodes['doc'];
 
  if Assigned(Noeud) then
    Showmessage('La valeur de ' + Noeud.NodeName + ' est de : ' + Noeud.Text )
ou j'ai essayer de parcourrir :
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
  for I:= 0 to XMLDoc.DocumentElement.ChildNodes.Count - 1 do begin
  Node:= XMLDoc.DocumentElement.ChildNodes[I];
  if Node.NodeType = ntElement then begin
    if Node.NodeName = 'document' then begin
      if Node.HasAttribute('Tlien') then
      begin
        Tlien:= Node.Attributes['Tlien'];
        showmessage(typelien);
      end;
      if not VarIsNull(Node.NodeValue) then
      begin
        doc:= Node.NodeValue;
        showmessage(doc);
      end;
 
    end;
  end;
  end;
Mais que dalle... c'est pas faute de connaitre les TTReeView mais là je comprends rien.

un autre point :
peut-on alimenter un xml sans partir d'un fichier ? (j'ai essayé pas mal de chose mais jamais réussi)
par exemple :
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
var
  Champ : TStringList;
  i : integer;
begin
  Champ := TStringList.Create;
  Try
    Champ.Add('<?xml version="1.0" standalone="yes"?>');
    Champ.Add('<docs><datas>'+
	      '<doc Tlien="0" unc="C:\xxxxx\truc.txt" name="truc.txt"/>'+
	      '<doc Tlien="0" unc="C:\xxxxx\andouille.xls" name="andouille.xls"/>'+
	      '</datas></docs>');
 
  Champ.SaveToFile('c:\XXXX\essai.xml');
  xmlDoc.LoadFromFile('c:\XXXX\essai.xml');
// ...
Je n'ai pas réussi à alimenter mon xml autrement qu'en passant par un fichier sinon j'ai des messages d'erreur :
j'ai tenté cela parmis plein de chose :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
// 1
xmlDoc.XML := Champ; // erreur Pas de document actif
// 2
xmlDoc.XML.AddStrings(Champ); // idem
// 3
  for i := 0 to Champ.Count - 1 do
    XMLDoc.XML.Add(Champ.Strings[i]); // idem

Hier soir, j'ai failli exploser mon pc... lol, je me suis vangé sur mon jeux favoris...

Mes intérrogations ?

Comment lire mon fichier et au moins récupérer une valeur ?
Si mon fichier est remplir, comment ajouter une section
<doc Tlien="0" unc="C:\xxxxx\truc.txt" name="truc.txt"/>
à l'intérieur de <datas></datas>
Comment partir d'un champs mémo d'une base donnéespour alimenter directement un XML ?


PS : j'ai évidement lu la FAQ

Merci à vous.