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

Vos Contributions VBScript Discussion :

[FAQ]Comment indenter un fichier XML [Fait]


Sujet :

Vos Contributions VBScript

  1. #1
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut [FAQ]Comment indenter un fichier XML
    Q : La création de fichier XML grâce à MSXML nous génére des fichier "non-indentés " ainsi le résultat du script dans la
    Comment créer un nouveau document XML ?
    se présente ainsi (fichier test1.xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Racine><element><nom>LENOM</nom><prenom>Prénom</prenom></element></Racine>
    ce qui n'est pas trop lissible dans un editeur de texte standard...

    le code suivant permet d'effectuer l'indentation du fichier XML :

    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
     
    '
    ' Indentention d'un fichier XML.. créé par exemple par MSXML..
    '
    Dim xmlDoc 
    Dim oStream
    Dim rdr 
    Dim wrt 
    Set xmlDoc = CreateObject("MSXML2.DOMDOCUMENT")
    set rdr = CreateObject("MSXML2.SAXXMLReader")
    set wrt = CreateObject("MSXML2.MXXMLWriter")
    Set oStream = CreateObject("ADODB.STREAM")
    oStream.Open 'Ouverture objet stream..
    xmlDoc.Load ("test1.xml") 'lit fichier xml .. Penser à rajouter des tests sur le résultat de la lecture ( fichier inexistant...)
    wrt.indent = True
    wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet stream
    Set rdr.contentHandler = wrt
    Set rdr.dtdHandler = wrt
    Set rdr.errorHandler = wrt
    rdr.putProperty "http://xml.org/sax/properties/lexical-handler", wrt
    rdr.putProperty "http://xml.org/sax/properties/declaration-handler", wrt
    rdr.Parse xmlDoc
    wrt.flush
    oStream.SaveToFile "test2.xml", 2
    'Libération des objets
    Set wrt = Nothing
    Set rdr = Nothing
    Set oStream = Nothing
    Set xmlDoc = Nothing

    aprés application de ce code le fichier test2.xml .. ce présent ainsi :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="UTF-16" standalone="no"?>
    <Racine>
        <element>
            <nom>LENOM</nom>
            <prenom>Prénom</prenom>
        </element>
    </Racine>

      0  0

  2. #2
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Bien, mais y'a quand même un petit souci :

    avant traitement, avec un editeur Hexa le fichier ressemble à ça (le début) :

    3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D224953
    4F2D383835392D31223F3E0D0A3C526163696E65204372656174653D2230332F
    après traitement :
    FFFE3C003F0078006D006C002000760065007200730069006F006E003D002200
    31002E0030002200200065006E0063006F00640069006E0067003D0022005500
    540046002D0031003600220020007300740061006E00640061006C006F006E00
    Tous les caractères sont suivis d'un null >> doublement de la taille du fichier !!

    Imaginons sur des gros fichiers
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension
      0  0

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    à oui cela doit venir du passage en UTF-16 ... j'avais pas remarqué... je regarde XMLWriter ... il doit y avoir quelque-chose pour spécifier le type d'encodage...
      0  0

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    J'ai trouvé !

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    .....
    Set oStream = CreateObject("ADODB.STREAM")
    oStream.Open 'Ouverture objet stream..
    oStream.Charset = "ISO-8859-1"
     
    xmlDoc.Load ("test1.xml") 'lit fichier xml .. Penser à rajouter des tests sur le résultat de la lecture ( fichier inexistant...)
    wrt.indent = True
    wrt.encoding = "ISO-8859-1"
    wrt.output = oStream ' "Connexion" de l'objet Writer à l'objet stream
    ....

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
    <Racine Create="03/03/2007">
    	<element ID="1">
    		<nom>LENOM</nom>
    		<prenom>Prénom</prenom>
    	</element>
    </Racine>

    3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D224953
    4F2D383835392D3122207374616E64616C6F6E653D226E6F223F3E0D0A3C5261
    63696E65204372656174653D2230332F30332F32303037223E0D0A093C656C65
    ....
    du coup, j'ai modifié la FAQ
    http://vb.developpez.com/faqvbs/?page=I.5#xmlCreateNew
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension
      0  0

  5. #5
    Candidat au Club
    Inscrit en
    Octobre 2008
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 4
    Points : 2
    Points
    2
    Par défaut
    Bonjour,

    J'ai utilisé ce bout de code pour indenter un fichier XML.
    Lors de l'utilisation de ceci dans un simple fichier VBS il n'y a aucun problème.
    Par contre lorsque je l'intègre dans le code de mon formulaire InfoPath, à l'exécution je me retrouve avec l'erreur suivante:
    Safety settings on this computer prohibit accessing a data source on another domain
    Or, mon fichier InfoPath ainsi que mon fichier XML sont en local sur ma machine (pour l'instant) et j'ai vérifier mes stratégies locales (l'accès aux données des autres domaines semble être activé correctement).
    Y aurait-il une autre méthode que le SaveToFile pour enregistrer mon fichier XML?
    D'avance merci.
      0  0

Discussions similaires

  1. [File][UTF-16]comment creer un fichier xml en utf-16?
    Par Invité dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/01/2006, 15h40
  2. Réponses: 2
    Dernier message: 17/12/2005, 20h07
  3. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52
  4. Réponses: 4
    Dernier message: 23/06/2005, 12h44
  5. [C#] [XML] Comment créer un fichier XML
    Par pc152 dans le forum Windows Forms
    Réponses: 12
    Dernier message: 28/09/2004, 13h41

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