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

ASP Discussion :

lire et traiter un fichier XML avec XMLDOM


Sujet :

ASP

  1. #1
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut lire et traiter un fichier XML avec XMLDOM
    Bonjour ou rebonjour à tous.
    Me revoilà aevc un autre problème.
    Je dois lire et traiter un fichier XML afin de récupérer les infos contenues dedans.
    J'ai donc opté pour l'objet XMLDOM.

    Lorsque je fais mon traitement, il y a une erreur comme suit:
    Erreur d'exécution Microsoft VBScript erreur '800a01a8'

    Objet requis
    et mon code est le suivant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
    objXMLDoc.async = False 
    objXMLDoc.load("fichier.xml") 
    Set Root = objXMLDoc.documentElement 
    Set Refretour = root.getAttributeNode("retour") 
    Set Refcount = root.getAttributeNode("count") 
    response.write("Value retour: " & Refretour.value)
    response.write("<br>Value count: " & Refcount.value & "<br>")
    avec la faute sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    response.write("Value retour: " & Refretour.value)
    Si vous pouviez m'aider ce serait sympa.
    Merci.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    il a quelle tête ton fichier?
    un truc comme ça? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ici le noeud principal
    <root retour="....." count="....">
        ici les autres noeuds
     
    </root>

  3. #3
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    Mon fichier est de la forme suivante pour la ligne que j'ai a tester

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version='1.0' encoding='ISO-8859-1' ?>
    <stack>
    <result retour='...' count='...' test='...'></result>
     
    ...
     
    </stack>

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    dans ce cas tu dois pointer sur les enfant du noeud principal
    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
     
    Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
    objXMLDoc.async = False 
    objXMLDoc.load("fichier.xml") 
     
    'noeud racine
    Set Root = objXMLDoc.documentElement 
     
    'on va chercher le premier noeud enfant
    Set firstResult  = objXMLDoc.documentElement.firstChild 
     
    'on récupère les attributs sur ce premier noeud enfant
    Set Refretour = firstResult.getAttributeNode("retour") 
    Set Refcount = firstResult.getAttributeNode("count") 
     
    'on affiche le resultat
    response.write("Value retour: " & Refretour.value) 
    response.write("<br>Value count: " & Refcount.value & "<br>")
    si ça marche pas j'ai pas d'autres idées

  5. #5
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    Merci cela fonctionne.

  6. #6
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    De nouveau un problème donc je rouvre le sujet.

    ma problematique complète:

    Je reçois une chaine de caractère ayant un format xml et je la stocke dans un fichier avec l'extension xml. ( avec un createtextfile)
    Le problème que je viens de voir c'est que les accents et d'autres caractères étaient mals pris en compte. Ce qui fait que mon fichier n'a pas forcement toutes les balises fermées...

    Savez vous comment je peux enregistrer un chaine de caractère sans perdre ses infos?
    Ou est ce qu'il y a un moyens de passer sans fichier?

  7. #7
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    J'ai deux format qui me parviennent.
    Dans le premier cas cela passe sans soucis. Dans le deuxième cela plante.
    Tout ça avec le code que amar00 m'a donné.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <stack total="1">
    <result version="..."   retour="..." count="..."/>
    </stack>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <stack total="1">
    <result version="..." retour="..." count="...">
    <trans avant="..." >
    <detail>...</detail>
    <analyse>
    <eval date="28/03/2006 16:32:06">...</eval>
    </analyse>
    </trans>
    </result>
    </stack>

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    je repond à l'avant dernière question
    pour charger une instance dom à partir d'un fichier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objXMLDoc.load("chemin physique du fichier")
    à partir d'un chaine de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    objXMLDoc.loadXML("la chaine xml")

  9. #9
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    J'avais trouvé entre temps mais pas plus de résultats corrects pour autant.

    Le problème vient plus du fait qu'il n'arrive pas à lire correctement le deuxième exemple ci dessus.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    Quand tu l'affiches dans internet explorer il le fait correctement ou non?
    Si oui comment cherches-tu à parser ton fichier, quel message d'erreur?

  11. #11
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    Pour l'affichage, cela passe pas car les accents sont pas pris en compte correctement. du coup il y a des balises qui sont mal implantées...

    Pour le message d'erreur c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Objet requis: '[object]'
    pour info c'est sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set firstResult  = objXMLDoc.documentElement.firstChild
    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
     
    Set objXMLDoc = CreateObject("Microsoft.XMLDOM") 
    objXMLDoc.async = False 
    objXMLDoc.loadxml(objHttpRequest.responsetext) 
     
    'noeud racine 
    Set Root = objXMLDoc.documentElement
     
    'on va chercher le premier noeud enfant 
    Set firstResult  = objXMLDoc.documentElement.firstChild 
     
    'on récupère les attributs sur ce premier noeud enfant 
    Set Refretour = firstResult.getAttributeNode("retour") 
    Set Refcount = firstResult.getAttributeNode("count") 
     
    'on affiche le resultat 
     
    if refcount.value = "1" then
    	Set NodeList = RESULT.getElementsByTagName("eval") 
    	For Each Elem In NodeList 
    	 response.write("eval " & Elem.firstChild.nodeValue & "<br>") 
    	Next
    	Set NodeList2 = RESULT.getElementsByTagName("detail") 
    	For Each Elem1 In NodeList2 
    	 response.write(" detail " & Elem1.firstChild.nodeValue & " <br>") 
    	Next
    	Set NodeList3 = RESULT.getElementsByTagName("classement") 
    	For Each Elem2 In NodeList3
    	 response.write(Elem2.firstChild.nodeValue & "<br>") 
    	Next
    else
    	response.Write("On n'a pas de commande sous cette reference ("& RScommande("id") &") chez fia-net")
    end if

  12. #12
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    En fait il y a des caractères illisibles.
    Je tourne en rond.
    Comment faire?

    C'est essentiel en plus.

  13. #13
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    Pour que les caractères accentués par exemple ne posent pas problème
    spécifie quel jeu de caractères tu utilises
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <?xml version='1.0' encoding='ISO-8859-1' ?>
    <stack total="1"> 
    <result version="éééé.." retour="..." count="..."> 
    <trans avant="..." > 
    <detail>...</detail> 
    <analyse> 
    <eval date="28/03/2006 16:32:06">...</eval> 
    </analyse> 
    </trans> 
    </result> 
    </stack>
    j'ai fait le test en vitesse et ça ça marche.
    Donc une idée :
    Tu concatène <?xml version='1.0' encoding='ISO-8859-1' ?> et ta chaine
    xml , puis loadXml .....

  14. #14
    Membre confirmé Avatar de Phiss
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2005
    Messages
    676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2005
    Messages : 676
    Points : 616
    Points
    616
    Par défaut
    En fait j'ai changé d'objet pour la récupération du xml et cela passe bien mieux.

    Donc c'est bon pour le moment.
    Merci en tout cas amar00.

  15. #15
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    745
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 745
    Points : 166
    Points
    166
    Par défaut
    et donc c'est quoi cet objet que tu as pris pour charger des fichiers XML??
    cela m'interesse...

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

Discussions similaires

  1. [11gR2] Lecture fichier XML avec XMLDOM
    Par jeremzzz dans le forum PL/SQL
    Réponses: 4
    Dernier message: 12/06/2015, 10h39
  2. Réponses: 0
    Dernier message: 27/08/2013, 16h23
  3. Lire un fichier XML avec VBA
    Par Mouse dans le forum Général VBA
    Réponses: 1
    Dernier message: 15/06/2006, 19h56
  4. [XML] lire un fichier xml avec php
    Par java_fun dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 31/03/2006, 12h21

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