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

Valider XML Discussion :

valider un fichier XML avec Python


Sujet :

Valider XML

  1. #1
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut valider un fichier XML avec Python
    bonjour,

    j'ai un fichier TEXT.XML que je voudrais transformer en un fichier utilisable par un programme.
    j'utilise les commandes Python :

    with open('/text.xml') as f:
    t = etree.parse(f)


    malheureusement mon fichier TEXT.XML comporte plusieurs lignes : <?xml version="1.0" encoding="UTF-8" ?>

    et j'ai donc des erreurs : lxml.etree.XMLSyntaxError: XML declaration allowed only at the start of the document, line 15, column 6

    comment résoudre ce problème?

    merci

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    En enlevant celles de ces lignes qui ne sont pas au début du fichier.
    Leur existence n'est pas tolérable en XML. Débarrasse-t-en.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    je peux faire ça avec mes commandes python precedentes?

  4. #4
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    je suis totallement novice en XML et autres.

    comment faire pour supprimer toutes les lignes <?xml version="1.0" encoding="UTF-8" ?> dans mon fichier XML?

    comment extraire du nouveau fichier XML prêt à l'emploi les valeurs dont j'ai besoin pour construire un autre fichier?

    Merci

  5. #5
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    je peux faire ça avec mes commandes python precedentes?
    Non, avec ta souris, ton clavier et ton éditeur de texte préféré. Pour ce travail-là, laisse tomber la programmation et fais-le toi-même.

    Citation Envoyé par trazomtg Voir le message
    comment extraire du nouveau fichier XML prêt à l'emploi les valeurs dont j'ai besoin pour construire un autre fichier?
    C'est une question pertinente, mais je dois dire qu'en Python je n'en sais rien.

    Cela dit, il existe probablement plusieurs manières de faire, et pour qu'un connaisseur Python puisse t'aider à ce sujet, il faudrait que tu présentes ton fichier XML et de quoi as-tu besoin dedans.

    Je serais également pas surpris qu'il existe pléthore de tutoriels à ce sujet. S'ils ne suffisent pas à t'aider il faudrait dire pourquoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    mon objectif est le suivant:

    je fais une découverte réseau avec un outil qui crée un fichier XML
    je veux extraire de ce fichier les noms et les adresses IP des devices
    je veux écrire ces données dans un fichier paramètre d'un outil de monitoring (en l'occurence Alignak)

    je ne veux donc rien faire à la main

    merci

  7. #7
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je doute fort que cet outil crée des fichiers XML mal formés comme ceux dont tu nous parles.
    Alors comment te retrouves-tu avec ces fichiers qui ont plusieurs déclarations XML alors que cela est complètement interdit ? Tu dois te débrouiller pour ne pas te retrouver avec ces mauvais fichiers, et n'en avoir que des bons à la place.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    voila le fichier XML que je reçois :

    <?xml version="1.0" encoding="UTF-8" ?>
    <REQUEST>
    <CONTENT>
    <DEVICE>
    <IP>192.168.33.1</IP>
    <MAC>00:50:56:c0:00:08</MAC>
    <NETPORTVENDOR>VMware</NETPORTVENDOR>
    </DEVICE>
    <MODULEVERSION>2.3</MODULEVERSION>
    <PROCESSNUMBER>1</PROCESSNUMBER>
    </CONTENT>
    <DEVICEID>foo</DEVICEID>
    <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>
    <?xml version="1.0" encoding="UTF-8" ?>
    <REQUEST>
    <CONTENT>
    <DEVICE>
    <DNSHOSTNAME>gateway</DNSHOSTNAME>
    <IP>192.168.33.2</IP>
    <MAC>00:50:5650:d0</MAC>
    <NETPORTVENDOR>VMware</NETPORTVENDOR>
    </DEVICE>
    <MODULEVERSION>2.3</MODULEVERSION>
    <PROCESSNUMBER>1</PROCESSNUMBER>
    </CONTENT>
    <DEVICEID>foo</DEVICEID>
    <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>

    comme tu le vois il y a plusieurs lignes <?xml version
    je veux récupérer ce qu'il y a en gras :

    <DNSHOSTNAME>gateway</DNSHOSTNAME>
    <IP>192.168.33.2</IP>
    <MAC>00:50xx:d0</MAC>
    <NETPORTVENDOR>VMware</NETPORTVENDOR>

    dans chaque balise <DEVICE>

    une idée?

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Du coup c'est plutôt deux fichiers collés l'un après l'autre. T'as pas seulement le problème des déclarations XML, il y a aussi que tu as pas une racine unique... Bref c'est pas un fichier XML c'est plusieurs fichiers XML.

    Tu dis "voilà ce que je reçois", mais tu reçois pas ça par hasard. Quelque chose ou quelqu'un est responsable de la création de ce fichier inutilisable. Ce quelque chose doit être réparé, par ce quelqu'un qui a fourni un résultat inutile.
    Ce que tu dois recevoir, c'est soit plusieurs fichiers corrects, soit un fichier unique qui a un format correct.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre du Club
    Homme Profil pro
    administrateur systemes et reseaux
    Inscrit en
    Septembre 2007
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : administrateur systemes et reseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 127
    Points : 53
    Points
    53
    Par défaut
    j'ai supprimé les llignes <?xml version="1.0" encoding="UTF-8" ?> dans mon fichier fichier.xml
    quand je lancela commande :

    with open('/fichier.xml') as f:
    x = etree.parse(f)


    j'ai l'erreur :

    lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 14, column 1

    je ne comprends pas!!!
    une idée?*
    merci

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Je te l'ai déjà dit : ton problème c'est que ce n'est pas un fichier XML, c'est plusieurs fichiers XML l'un à la suite de l'autre.
    Ça ne va pas. Il faut corriger le bidule qui produit ça.

    Un fichier XML n'a qu'un seul élément racine. Dans l'exemple que tu as donné, si tu supprimes les lignes en question, tu te retrouves avec deux éléments racine <REQUEST>. Pas bon.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [DTD] valider un fichier XML avec une DTD
    Par Anubis dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 18/02/2008, 18h00
  2. Lire un fichier XML avec Python
    Par eyquem dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2007, 13h54
  3. Gérer un fichier XML avec Python
    Par ffets dans le forum Général Python
    Réponses: 25
    Dernier message: 31/10/2007, 14h47
  4. [Xml/Xsd]valider son fichier Xml avec un schéma xsd
    Par ePoX dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2006, 22h30
  5. Valider un fichier XML avec un Schema
    Par Groove dans le forum Valider
    Réponses: 4
    Dernier message: 09/11/2005, 08h15

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