Bonjour,
Suite à mon premier sujet : http://www.developpez.net/forums/d11...mo-string-xml/
Je n'arrive pas à sortir de cette erreur, message complet :
An Invalid character was found in text content
Ligne :2
<docs><data><doc tlien="
Si je pars de cela :
Je n'ai aucun problème pour ajouter des datas que je réalise comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 StringXml.Add('<?xml version="1.0" standalone="yes"?>'); StringXml.Add('<docs><data/></docs>');
Par contre une fois avoir ajouté des data je tombe systématiquement sur cette erreur lorsque je rend active mon XMLDoc1.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 With XmlDoc1.DocumentElement.ChildNodes['data'].AddChild('doc') do begin Attributes['tlien'] := '0'; Attributes['unc'] := IncludeTrailingPathDelimiter(CheminDocuments) +IncludeTrailingPathDelimiter(NomDuDossier) +ExtractFileName(cheminFile.Strings[i]); Attributes['enclair'] := ExtractFileName(IncludeTrailingPathDelimiter(CheminDocuments) +IncludeTrailingPathDelimiter(NomDuDossier) +ExtractFileName(cheminFile.Strings[i])); Attributes['datecreation'] := FormatDateTime('dd/mm/yyyy hh:nn:ss',DateCreation); end;
Pour faire plus claire voici ce que je test au début de mes opérations :
Donc si SMDBGrid1.DataSource.DataSet['Docs']; est vide pas de problème, je rempli moi même le StringXml (TStringList) et j'alimente mon XMLDoc1, mais si elle est déjà rempli cela ne marche pas.
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 StringXml := TStringList.Create; Try if SMDBGrid1.DataSource.DataSet['Docs'] = '' then begin StringXml.Add('<?xml version="1.0" standalone="yes"?>'); StringXml.Add('<docs><data/></doc>'); end else StringXml.Text := SMDBGrid1.DataSource.DataSet['Docs']; XMLDoc1.active := False; XMLDoc1.XML.Clear; XMLDoc1.XML.Text := StringXML.Text; XMLDoc1.active := True; Finally if Assigned(StringXml) then FreeAndNil(StringXml); End;
Les données reçues de SMDBGrid1.DataSource.DataSet['Docs'] que je mets dans StringXML ressemble à cela :
<?xml version="1.0" standalone="yes"?>
<docs><data><doc tlien="0" unc="\\user\xxxx\3TGV\Nouveauté.pdf" enclair="Nouveauté.pdf" datecreation="16/10/2011 14:17:30"/></data></docs>
Donc quand je lis ces données et que j'alimente mon XMLDoc1, je tombe sur cette erreur.
J'ai essayé de de faire
StringXML.SaveToFile('c:\xxx\essai.xml');
XMLDOC1.LoadFromFile('c:\xxx\essai.xml');
etc... toujous pareil.
Si je mets un showmessage sur StringXML.Text juste avant XMLDoc1.active := False; les données sont bien là (comme décrite si dessus).
Mais chose étrange si j'ouvre le fichier essai.xml avec le navigateur c'est vide rien ne s'affiche, mais si j'ouvre avec le bloc note j'ai bien mon xml ???
PS : SMDBGrid1.DataSource.DataSet['Docs']; est de type Memo
je vous remercie pour votre aide à comprendre mon erreur.
Partager