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 6 et antérieur Discussion :

Impossible de parser un XML


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut Impossible de parser un XML
    Bonjour,

    Je suis novice dans la manipulation de fichiers XML.
    Je cherche à récupérer des spécification d'import de fichier Excel sous Access.

    Les spécifications d'import ne sont accessibles qu'en parcourant le modèle objet d'Access,et les spécifications d'import sont stockés dans un XML qui n'est pas consultable directement sous Access.
    Afin de récupérer les information, j'ai utilisé le complément XML DOM et utilisé les fonctionnalités suivantes :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Sub litfichierxml()
    Dim nomfic As String
    nomfic = "<répertoire/fichier.xml>"
    BrowseXMLDocument filename:=nomfic
    End Sub
     
     
     
    Private Sub BrowseXMLDocument(ByVal filename As String)
     
        Dim xmlDoc As DOMDocument, root As IXMLDOMElement
     
        Set xmlDoc = New DOMDocument
        xmlDoc.async = False
        xmlDoc.Load filename
        Set root = xmlDoc.documentElement
        If Not root Is Nothing Then
            Debug.Print root.baseName
            BrowseChildNodes root
        End If
     
    End Sub
     
     Private Sub BrowseChildNodes(root_node As IXMLDOMNode)
     
        Dim i As Long
       Dim attr As IXMLDOMAttribute
        For i = 0 To root_node.childNodes.length - 1
            If root_node.childNodes.Item(i).nodeType <> 3 Then Debug.Print root_node.childNodes.Item(i).baseName
            For Each attr In root_node.childNodes.Item(i).Attributes
                     Debug.Print attr.baseName, attr.Text
            Next attr
            Debug.Print "-------------------------------------"
            BrowseChildNodes root_node.childNodes(i)
        Next
    End Sub
    A noter que je ne suis pas arriver à lire le code XML (variable de type string) sans avoir à l'exporter dans un fichier.
    Lorsque j'essaye de lire un fichier ... rien ne se passe ! ...
    Afin de contrôler si le fichier exporté est correct, j'ai essayé de le charger sous Excel; là Excel trouve des anomalies.
    Je vous joins un exemple de fichier XML que je dois analyser ;
    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
     
    <?xml version="1.0" encoding="utf-8" ?>
    <ImportExportSpecification Path = "\\ntsparigi\Comarea\Infrastrutture\2. SUIVI\1. Base de données\1. Base de données ACCESS\Data\envois_DAOT_MEDDTL.xlsx" xmlns="urn:www.microsoft.com/office/access/imexspec">
         <ImportExcel FirstRowHasNames="true" Destination="test_ECOMOUV - Suivi transmission DAOT au MEDDTL" Range="Feuil1$" >
                <Columns PrimaryKey="N° Site">
                      <Column Name="Col1" FieldName="N° Site" Indexed="YESDUPLICATES" SkipColumn="false" DataType="Double" />
                      <Column Name="Col2" FieldName="Ancien numéro" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col3" FieldName="Type CA" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col4" FieldName="Nom du fichier transmis - 1er envoi" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col5" FieldName="Date première transmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col6" FieldName="Support première transmission électronique" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col7" FieldName="Date premier envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col8" FieldName="Date accusé réception premier envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col9" FieldName="Nom du fichier transmis - 2ème envoi" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col10" FieldName="Date seconde transmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col11" FieldName="Support seconde transmission électronique" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col12" FieldName="Date deuxième envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col13" FieldName="Date accusé réception deuxième envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col14" FieldName="Nom du fichier transmis - 3ème envoi" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col15" FieldName="Date  3ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col16" FieldName="Support 3ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col17" FieldName="Date 3ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col18" FieldName="Date accusé réception 3ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col19" FieldName="Nom du fichier transmis - 4ème envoi" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col20" FieldName="Date  4ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col21" FieldName="Support 4ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col22" FieldName="Date 4ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col23" FieldName="Date accusé réception 4ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col24" FieldName="Nom du fichier transmis - 5ème envoi" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col25" FieldName="Date  5ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col26" FieldName="Support 5ème transmission électronique" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col27" FieldName="Date 5ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col28" FieldName="Date accusé réception ème envoi papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col29" FieldName="Demande complément AOT - Nom fichier" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col30" FieldName="Demande complément AOT - Date tranmission électronique" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col31" FieldName="Demande complément AOT - Date tranmission papier" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col32" FieldName="Date commentaires n°1 MEDDTL" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col33" FieldName="Commentaires n°1 MEDDTL" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col34" FieldName="Commentaires n°1 transmis à SETEC ? (0/1)" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col35" FieldName="Date réponse commentaires n°1 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col36" FieldName="Réponse commentaires n°1 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col37" FieldName="Date commentaires n°2 MEDDTL" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col38" FieldName="Commentaires n°2 MEDDTL" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col39" FieldName="Commentaires n°2 transmis à SETEC ? (0/1)" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col40" FieldName="Date réponse commentaires n°2 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col41" FieldName="Réponse commentaires n°2 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col42" FieldName="Date commentaires n°3 MEDDTL" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col43" FieldName="Commentaires n°3 MEDDTL" Indexed="NO" SkipColumn="false" DataType="Memo" />
                      <Column Name="Col44" FieldName="Commentaires n°3 transmis à SETEC ? (0/1)" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col45" FieldName="Date réponse commentaires n°3 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col46" FieldName="Réponse commentaires n°3 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col47" FieldName="Date commentaires n°4 MEDDTL" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col48" FieldName="Commentaires n°4 MEDDTL" Indexed="NO" SkipColumn="false" DataType="Memo" />
                      <Column Name="Col49" FieldName="Champ49" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col50" FieldName="Date réponse commentaires n°4 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col51" FieldName="Réponse commentaires n°4 par ECOMOUV" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col52" FieldName="Date refus" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col53" FieldName="Motif refus" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col54" FieldName="Synthèse motif refus" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col55" FieldName="Réponse au refus" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col56" FieldName="Indice refus" Indexed="NO" SkipColumn="false" DataType="Double" />
                      <Column Name="Col57" FieldName="Date refus CAOT" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col58" FieldName="Motif refus CAOT" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col59" FieldName="Synthèse motif refus CAOT" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col60" FieldName="Réponse au refus CAOT" Indexed="NO" SkipColumn="false" DataType="DateTime" />
                      <Column Name="Col61" FieldName="Indice refus CAOT" Indexed="NO" SkipColumn="false" DataType="Text" />
                 </Columns>
            </ImportExcel>
    </ImportExportSpecification>
    Ce fichier refuse d'être parsé. J'en ai très vite conclu que la présence de caractères accentués était à l'origine de ce dysfonctionnement

    Ceci est un fichier que j'ai manipulé (j'ai enlevé tous les caractères accentués), et qui fonctionne:
    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
    <?xml version="1.0" encoding="utf-8" ?>
    <ImportExportSpecification Path = "C:\Users\isabelle pierre\Documents\Jean-Yves DUMAS\Frontend local\Data\conducteurs_travaux.xlsx" xmlns="urn:www.microsoft.com/office/access/imexspec">
         <ImportExcel FirstRowHasNames="true" Destination="test import table excel" Range="Referentiel$" >
                <Columns PrimaryKey="ID_Etat">
                      <Column Name="Col1" FieldName="ID_Etat" Indexed="NO" SkipColumn="false" DataType="Double" />
                      <Column Name="Col2" FieldName="Type" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col3" FieldName="GV" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col4" FieldName="Region" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col5" FieldName="Dep" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col6" FieldName="Commune" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col7" FieldName="Statut" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col8" FieldName="Entreprise" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col9" FieldName="Conducteur de travaux" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col10" FieldName="email" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col11" FieldName="Mobile" Indexed="NO" SkipColumn="false" DataType="Text" />
                      <Column Name="Col12" FieldName="Ligne Fixe" Indexed="NO" SkipColumn="false" DataType="Text" />
                 </Columns>
            </ImportExcel>
    </ImportExportSpecification>
    Je souhaiterais m'affranchir de ce problème de caractère accentué. En lisant plusieurs article, je pense qu'une solution serait de passer par un encodage en utf-16. Une autre solution serait de remplacer les caractères accentués par des coaractères compatibles. J'ai essayé de les remplacer par les équivalents HTML (ex: é par &eacute;), mais sans plus de succès.

    Comment faire pour rendre ce code HTML parsable ?
    Je précise que je n'ai pas la main sur l'en-tête Xml (notamment l'encodage, où il force l'encodage en utf-8

  2. #2
    Membre Expert Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Par défaut
    La raison principale est probablement que le fichier soit encodé en iso-8859-1: en tout cas, pas en utf-8. Pour vérifier, simplement chargez le fichier avec un éditeur hex, si vous voyez que le é dans le mot données par exemple soit encodé comme E9, ça confirme que c'est le problème. Il doit être encoder comme C3 A9 pour que le fichier soit en utf-8 (je simplifie...).

    Je suggère que vous allez vérifier ce fait tout d'abord et avant tout.

  3. #3
    Membre émérite Avatar de dumas.blr
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2010
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2010
    Messages : 599
    Par défaut
    merci pour ce conseil. Je vais vérifier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2010] Impossible de parser un XML
    Par dumas.blr dans le forum VBA Access
    Réponses: 3
    Dernier message: 02/10/2013, 20h22
  2. Parser Du XML, impossible de compiler
    Par hannibal.76 dans le forum GWT et Vaadin
    Réponses: 6
    Dernier message: 19/12/2011, 14h31
  3. [DOM] Impossible de parser une clef DSA dans un XML ?
    Par dondamiano dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 12/06/2010, 00h13
  4. [C#] Parser du XML
    Par karl3i dans le forum Windows Forms
    Réponses: 5
    Dernier message: 27/02/2009, 09h46
  5. impossible de parser le fichier hibernate.cfg.xml
    Par paolo2002 dans le forum Wildfly/JBoss
    Réponses: 9
    Dernier message: 30/05/2007, 17h39

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