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

VB.NET Discussion :

[2005] Export Datatable XML mais avec modif ?


Sujet :

VB.NET

  1. #1
    Membre actif

    Homme Profil pro
    Responsable SI
    Inscrit en
    Mars 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Responsable SI

    Informations forums :
    Inscription : Mars 2004
    Messages : 187
    Points : 299
    Points
    299
    Par défaut [2005] Export Datatable XML mais avec modif ?
    Bonjour

    Je dois dans le cadre d'un développement avec un partenaire, générer des fichiers XML ayant un format simple, mais avec certaines spécificités.

    Pour gagner du temps j'ai donc créé des requêtes SQL à partir desquelles je génère un fichier XML (merci WriteXML !) : mais voilà, le fichier en sortie ne correspond pas "tout-à-fait" à ce que je devrais avoir !

    L'un des fichiers avoisine les 2 Mo...


    Trois pistes s'offrent à moi :

    1°) méthode "bourrin" : éditer le fichier généré comme un fichier texte, et le corriger ( )

    2°) méthode "XPath" : éditer le fichier généré comme un fichier XML et le modifier en conséquence ( )

    3°) méthode "que j'aimerais employer sans savoir si c'est possible" : paramétrer mon XMLTextWriter de manière à sortir "directement" le bon format avec WriteXML ! ( )


    N'étant pas top niveau au niveau des manips de fichiers XML, la troisième méthode me brancherait mais je ne sais comment m'y prendre. J'ai bien entendu parcouru les nombreux tutos et codes sources sur le sujet, sans grande conviction...


    Fichier obtenu via WriteXML (natif) :
    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
     
    <?xml version="1.0" standalone="yes"?>
    <DocumentElement>
      <BVA_FONCTION>
        <FCT_ID>1</FCT_ID>
        <FCT_LIBELLE>Comptable</FCT_LIBELLE>
      </BVA_FONCTION>
      <BVA_FONCTION>
        <FCT_ID>2</FCT_ID>
        <FCT_LIBELLE>Conseiller</FCT_LIBELLE>
      </BVA_FONCTION>
      <BVA_FONCTION>
        <FCT_ID>3</FCT_ID>
        <FCT_LIBELLE>Correspondant CercaSidéral</FCT_LIBELLE>
      </BVA_FONCTION>
    </DocumentElement>
    Format demandé :
    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <dataroot>
      <BVA_FONCTION>
        <FCT_ID>1</FCT_ID>
        <FCT_LIBELLE>Comptable</FCT_LIBELLE>
      </BVA_FONCTION>
      <BVA_FONCTION>
        <FCT_ID>2</FCT_ID>
        <FCT_LIBELLE>Conseiller</FCT_LIBELLE>
      </BVA_FONCTION>
      <BVA_FONCTION>
        <FCT_ID>3</FCT_ID>
        <FCT_LIBELLE><![CDATA[Correspondant CercaSidéral]]></FCT_LIBELLE>
      </BVA_FONCTION>
    </dataroot>

    En clair, il faut rajouter l'encoding, remplacer le dataroot mais surtout "envelopper" les valeurs contenant accents ou caractères spéciaux par CDATA

    La seconde méthode sera mon choix si la troisième n'est pas possible, mais bon ça m'épate !

    Une URL salvatrice ?...
    Mouton à 5 pattes. Ma spécialité : la transformation de flux de données...

  2. #2
    Membre actif

    Homme Profil pro
    Responsable SI
    Inscrit en
    Mars 2004
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Responsable SI

    Informations forums :
    Inscription : Mars 2004
    Messages : 187
    Points : 299
    Points
    299
    Par défaut
    Up

    Bon, en utilisant ce code, j'arrive à améliorer un poil la sortie (en direct) ; par contre le travail avec XPath me semble inévitable car un WriteXML direct depuis la datatable ne permet pas à priori, avec un XMLTextWriter, de modifier après ajout les éléments XML générés...


    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
     
                '---------- Définition des paramètres de création du fichier XML résultant
                Dim settings As New Xml.XmlWriterSettings()
                With settings
                    .NewLineHandling = Xml.NewLineHandling.Entitize
                    .Indent = True
                    .Encoding = System.Text.Encoding.UTF8
                End With
     
    (...)
     
                Dim xtw As Xml.XmlWriter = Xml.XmlWriter.Create(My.Settings.PathXML & My.Settings.NomFichierUnivers, settings)
                dtUni.WriteXml(xtw)
                xtw.Flush()
                xtw.Close()
    Mouaif... Bon je suis toujours ouvert à solution plus élégante !
    Mouton à 5 pattes. Ma spécialité : la transformation de flux de données...

Discussions similaires

  1. Réponses: 6
    Dernier message: 07/01/2011, 18h49
  2. Réponses: 6
    Dernier message: 02/02/2010, 13h54
  3. [tXSLT] XML+XSL=>XML mais avec un encodage UTF-8 différent de ce lui d'origine
    Par mathieu_r dans le forum Développement de jobs
    Réponses: 2
    Dernier message: 13/01/2010, 16h12
  4. Copie d'un fichier XML avec modification de valeur d'attribut
    Par CocoRambo dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 11/07/2007, 10h21
  5. Réponses: 2
    Dernier message: 08/01/2007, 20h36

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