IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

problème formatage xml avec MSXML2


Sujet :

Outils Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut 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 vb : 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
    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 : 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
    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
    Fichiers attachés Fichiers attachés

  2. #2
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2010
    Messages : 2
    Par défaut
    J'ai finallement réussi à trouver la solution en récupérant directement l'output formatté sans passer par le flush:

    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
    procedure FormatXmlDocument(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 := '';
       rdr.contentHandler := wrt;
       rdr.ErrorHandler := wrt;
       rdr.parse(xmlDoc);
       xmlDoc.LoadXML(wrt.output);
       rdr := Unassigned();
       wrt := Unassigned();
    end;
    Je joins le fichier ISS pour ceux que ça intéresserait.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. Problème lecture xml avec XML::SIMPLE
    Par chalu133 dans le forum Langage
    Réponses: 1
    Dernier message: 05/12/2012, 16h12
  2. [XSD] Problème validation xml avec schema
    Par Loki13 dans le forum Valider
    Réponses: 1
    Dernier message: 24/10/2008, 20h19
  3. [JAXB] Problème parsing XML avec XSD validant
    Par vano dans le forum Persistance des données
    Réponses: 2
    Dernier message: 26/08/2008, 09h59
  4. Problème de XML avec utilisation de préfixe
    Par boris007 dans le forum Framework .NET
    Réponses: 4
    Dernier message: 29/08/2006, 15h57
  5. [Plugin / XML] Problème plugin Eclipse avec JDOM
    Par kiko_18 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 12/02/2005, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo