Champs Memo -> String -> Xml
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:
1 2
| <?xml version="1.0" standalone="yes"?>
<docs><datas/></docs> |
le but étant d'obtenir ce genre de chose
Code:
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:
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:
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:
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:
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.