1 pièce(s) jointe(s)
problème formatage xml avec MSXML2
Bonjour,
J'essaie de mettre en place dans Inno Setup un moyen de créer un fichier de configuration tel que je l'utilise ensuite avec mon application écrite en VB6.
J'arrive à créer un DOMDocument et à le sauver, par contre si j'essaie de le formater avec la routine ci-dessous, le fichier est bien sauvé mais il est vide ! :(
Voici le code que j'utilise en VB :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| ' Add formatting to the document.
Private Sub FormatXmlDocument(ByVal xmlDoc As DOMDocument)
Dim rdr As SAXXMLReader
Dim wrt As MXXMLWriter
Set rdr = New SAXXMLReader
Set wrt = New MXXMLWriter
wrt.Indent = True
wrt.encoding = "ISO-8859-1"
wrt.output = xmlDoc
Set rdr.contentHandler = wrt
Set rdr.ErrorHandler = wrt
rdr.parse xmlDoc
wrt.Flush
Set rdr = Nothing
Set wrt = Nothing
End Sub |
... et voici la traduction pour Inno setup (je ne suis pas un spécialiste en delphi ...)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| procedure FormatXmlDocument(const xmlDoc: variant);
var
rdr, wrt: variant;
begin
rdr := CreateOleObject('MSXML2.SAXXMLReader');
wrt := CreateOleObject('MSXML2.MXXMLWriter');
wrt.Indent := True;
wrt.encoding := 'ISO-8859-1';
wrt.output := xmlDoc;
rdr.contentHandler := wrt;
rdr.ErrorHandler := wrt;
MsgBox(xmlDoc.XML, mbInformation, MB_OK);
rdr.parse(xmlDoc);
MsgBox(xmlDoc.XML, mbInformation, MB_OK);
wrt.Flush();
//MsgBox(xmlDoc.XML, mbInformation, MB_OK);
rdr := Unassigned();
wrt := Unassigned();
//MsgBox(xmlDoc.XML, mbInformation, MB_OK);
end; |
Bon, j'ai déjà du mal à comprendre comment cela fonctionne en VB (j'ai bêtement recopié un exemple de code), parce que on passe le document par valeur (?) et à la fin le document se retrouve bien formaté dans la routine appelante !? alors que pendant le traitement après le parse y'a plus rien ... :?
Dans Inno setup ça fait un peu pareil , après le parse, plus rien, mais en sortie plus rien non plus.
J'ai essayé de passer le document par référence, mais pas mieux ! J'en appelle donc à ceusses qui savent ...
Merci d'avance
Je joins le fichier iss (testXML.zip) qui me sert pour test.
Thierry