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

WinDev Discussion :

Indentation du fichier XML généré par windev


Sujet :

WinDev

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut Indentation du fichier XML généré par windev
    Bonjour,
    Je travaille sur une application avec Windev, et j'ai besoin de générer un fichier XML.
    J'ai bien généré le fichier, mais il est illisible puisque mes balises sont toutes sur la même ligne.
    J'ai essayé de procéder à créer des retours chariot, et des tabulations mais j'obtiens le résultat suivant :

    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    XMLAjouteFils("MonFichierXML","immeuble",RC + TAB, vrai)
    XMLAjouteFils("MonFichierXML","étage",RC + TAB + TAB, vrai)
    XMLAjouteFils("MonFichierXML","appartement",RC + TAB + TAB + TAB, vrai)
    Résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <immeuble> &#13
    	<étage> &#13
                       <appartement>&#13
    Alors avez-vous une idée pour indenter mon fichier XML généré ?
    Merci d'avance pour vos réponses

  2. #2
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    En effet le xml généré par windev n'est pas formaté (ce qui d'après l'éditeur n'est pas un problème puisqu'il est correct syntaxiquement)

    Pour le faire à la main il faut le faire après génération du code xml.
    Surtout pas de TAB dans les XMLAjouteFils et autres
    Mais par contre dans le contenu généré tu peux ajouter l'indentation par des remplacements de chaîne
    Genre : Remplace(sContenuXML, "<mabalise>", TAB + "<mabalise>")

    Mais c'est pénible à faire car il faut traiter toutes les balises

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    171
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2012
    Messages : 171
    Points : 56
    Points
    56
    Par défaut
    Merci pour votre réponse,
    En fait, j'ai trouvé un site web qui se charge de l'indentation du code http://www.indentation-xml.com/
    Mais je dois me pencher sur le développement d'un programme qui indente le fichier XML, parce que j'ai besoin de récupérer un fichier XML indenté à partir de mon application sans avoir à passer par un autre service distant.

  4. #4
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    hello,
    si l'application doit tourner sur des machines dont l' O.S > XP ( Windows 7, Windows 8) pour formater ton xml tu peux utiliser dotnet avec le XmlTextWriter qui formate le XML.

    1 - Inclure les assemblages dotnet System et System.Xml dans son projet.

    Voici un code exemple d'utilisation :
    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
    MachaineXML est une chaîne="<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><?xml-stylesheet href='T_POULE.xsl' type='text/xsl'?><HF_DOCUMENT><T_POULE><POU_CODE>A</POU_CODE><POU_LIB>POULE A</POU_LIB><POU_PHASE>1</POU_PHASE></T_POULE><T_POULE><POU_CODE>B</POU_CODE><POU_LIB>POULE B</POU_LIB><POU_PHASE>1</POU_PHASE></T_POULE></HF_DOCUMENT>"
    mStream  est un MemoryStream
    writer est un XmlTextWriter(mStream,Encoding.Latin1)
    document est un System.Xml.XmlDocument
    document.LoadXML(MachaineXML)
    writer.Formatting = Formatting.Indented;
    // on écrit le XML dans un XmlTextWriter qui formate
    document.WriteContentTo(writer)
    writer.Flush()
    mStream.Flush()
    // on "rembobine le flux"
    mStream.Position = 0;
    //on lit le flux dans un StreamReader
    sReader  est un StreamReader(mStream)
    // on extrait le texte du StreamReader
    MachaineXMLFormatée est une chaîne  = sReader.ReadToEnd()
    Trace(MachaineXMLFormatée)
    mStream.Close()
    writer.Close()
    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  5. #5
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Merci pour le tuyau jurassic pork
    ça va rendre service à beaucoup de monde

    ça nécessite quelle version minimale du framework .net ?

  6. #6
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    XmlTextWriter existait déjà en dotnet 2.0 et comme Windows 7 est installé (nominalement) avec la version 3.5 de dotnet il n' y a pas de problème.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  7. #7
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Ok merci

  8. #8
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    J'ai ce message à la déclaration de : writer est un XmlTextWriter(mStream, Encoding.Latin1)

    Impossible de construire l'objet de type <XmlTextWriter>
    L'invocation de la méthode <.ctor()> du type <XmlTextWriter> a échoué
    jurassic pork, sais-tu d'où ça peut venir ?
    J'ai bien System et System.xml dans mon projet

  9. #9
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    hello,
    tu es sous quel O.S avec quelle version de windev. Moi je suis sous Windows 7 64 bits Windev 16 mais je compile en 32 bits.
    Pour être sûr d'utiliser les classes dotnet tu peux essayer de rajouter le nom complet :
    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    mStream  est un  System.IO.MemoryStream
    writer est un System.Xml.XmlTextWriter(mStream,Encoding.Latin1)
    document est un System.Xml.XmlDocument
    tu peux essayer aussi l'encodage unicode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    writer est un System.Xml.XmlTextWriter(mStream,Encoding.Unicode)
    sinon je vois pas trop. Le ctor c'est le constructeur.

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  10. #10
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Windows 8.1 64 bits, je compile aussi en 32 bits

    Le nom complet ne change rien, l'unicode non plus
    Strange ...

  11. #11
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    tu ne m'as pas dit quelle version de windev tu utilisais. A part un problème d'O.S ou de DLL windev wdxxnet je ne vois pas trop d'où cela peut venir. Si quelqu'un d'autre à l'occasion de tester le code sur une version et un os différent de moi.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  12. #12
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Ah pardon : WD19 56s
    J'essaierai de tester sur une VM en Seven

    Pour info j'ai la même erreur en pré-version de WD20, ça vient peut être de Windows 8.1

  13. #13
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    En complément, j'ai fait un exe (32bits) que j'ai testé sur Windows 7 64bits

    J'ai d'abord eu un message d'erreur disant que 'Visual Studio 2010 Redistribuable Package' est manquant

    Je l'ai installé et j'ai eu ensuite la même erreur que sur mon poste en Windows 8.1

    Quelqu'un pourrait tester en WD19 ?

  14. #14
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    j'ai testé dans une machine virtuelle windows 2012 server ( équivalent à windows 8) dessus il y avait le dotnet 3.5 et 4.5 installés. Cela marche toujours.

    Mes fichiers windev 16 du répertoire exe ici : http://www.filedropper.com/testxml

    Pour voir l'effet du formatage dans la fenêtre trace il faut mettre l'option accepter les caractères de contrôle.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  15. #15
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Ok merci, c'est testé : ton exe fonctionne parfaitement autant sur Windows 8.1 que sur Seven

    Du coup j'ai testé le code sur :

    - Windev 16 : ok
    - Windev 17 : ok
    - Windev 18 : erreur
    - Windev 19 : erreur
    - Windev 20 : erreur

    Donc ça ne fonctionne plus à partir de Windev 18 !

    Je vais faire une demande au ST, avec ton bout de code si tu le permets

  16. #16
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    OK, pas de problème. Et tiens nous au courant si le S.T te donne une solution ou une explication.
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  17. #17
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    hello,
    voici une autre méthode en utilisant que des objets OLE automation :
    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
    21
    22
    23
     writer est un objet OLE "MSXML2.MXXMLWriter.6.0"
     reader est un objet OLE "MSXML2.SAXXMLReader.6.0"
     oStream est un objet OLE "ADODB.STREAM"
     MachaineXML est une chaîne="<?xml version='1.0' encoding='ISO-8859-1' standalone='yes'?><?xml-stylesheet href='T_POULE.xsl' type='text/xsl'?><HF_DOCUMENT><T_POULE><POU_CODE>A</POU_CODE><POU_LIB>POULE A</POU_LIB><POU_PHASE>1</POU_PHASE></T_POULE><T_POULE><POU_CODE>B</POU_CODE><POU_LIB>POULE B</POU_LIB><POU_PHASE>1</POU_PHASE></T_POULE></HF_DOCUMENT>"
     
    oStream>>Open()
    oStream>>Charset = "ISO-8859-1"
    //writer>>byteOrderMark = False
    writer>>encoding = "ISO-8859-1" 
    writer>>omitXMLDeclaration = False  
    writer>>indent = True
    writer>>standalone = True
    writer>>output = oStream  
    reader>>contentHandler = writer  
    reader>>errorHandler = writer  
    reader>>dtdHandler = writer  
    reader>>putProperty("http://xml.org/sax/properties/lexical-handler",writer)
    reader>>putProperty("http://xml.org/sax/properties/declaration-handler", writer)
    reader>>parse( MachaineXML)
    writer>>flush()
    // écriture dans le fichier de sortie
    oStream>>SaveToFile("F:\temp\BeautifulXML.xml", 2)
    oStream>>Close()
    Attention aux propriétés oStream>>Charset et writer>>encoding si on travaille en UTF-8

    Ami calmant, J.P
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  18. #18
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Salut
    Tu es plein de ressources !
    ça fonctionne nickel sous Windows 7 et 8.1 (et même Windows 10 pv)

    Cet objet est disponible de base sous Windows ?

  19. #19
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 949
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 949
    Points : 9 277
    Points
    9 277
    Par défaut
    Sans aucune certitude, les objets devraient être disponibles sur toutes les versions de windows depuis Windows XP SP3
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  20. #20
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Ok merci
    Je viens de transmettre une requête au ST concernant la première méthode (un projet en 17, un autre en 19), je ferai un retour quand j'aurai leur réponse

    En tout cas kariel a une solution à son problème maintenant

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/03/2009, 14h09
  2. Réponses: 0
    Dernier message: 21/03/2009, 14h41
  3. Récupération d'un fichier XML généré par une URL
    Par Gordon Freeman dans le forum Langage
    Réponses: 1
    Dernier message: 26/01/2009, 17h02
  4. [Castor] Echappement des caractères <> dans un fichier XML généré par Castor XML
    Par mbinte dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 22/10/2008, 14h33
  5. [JDOM] Fichier xml généré par jdom
    Par vero59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 05/08/2005, 16h30

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