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

Interfaçage autre langage Python Discussion :

XPath et Python


Sujet :

Interfaçage autre langage Python

  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 XPath et Python
    bonjour,
    Avant tout je tiens à dire que je ne connais ni XPath NI Python!!!

    A) 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?


    B)

    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

    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 vous le voyez, 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?

    merci

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Ce que vous montrez n'est pas un document XML mais la concaténation de plusieurs documents XML. Soit vous pouvez configurer l'engin qui les construit pour qu'il produise un document XML par fichier, soit il va vous falloir découper cela en plusieurs documents pour pouvoir utiliser un analyseur XML...
    Mais un document XML étant un fichier texte, vous pouvez aussi y rechercher les informations "à la main".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  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
    désolé mais c'est une seule commande qui produit ce fichier XML avec plusieurs lignes <?xml
    j'ai utilisé une commande shell pour supprimer ces lignes et maintenant je voudrais utiliser XPath pour travailler mon fichier fichier.xml

    je passe la commande sous python :

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


    mais j'ai une erreur :

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

    ou est l'erreur? je vois pas!!!!
    merci

    Voici mon fichier .xml :

    <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>
    <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>
    <REQUEST>
    <CONTENT>
    <DEVICE>
    <DNSHOSTNAME>CentOS-Virtual</DNSHOSTNAME>
    <IP>192.168.33.128</IP>
    </DEVICE>
    <MODULEVERSION>2.3</MODULEVERSION>
    <PROCESSNUMBER>1</PROCESSNUMBER>
    </CONTENT>
    <DEVICEID>foo</DEVICEID>
    <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>
    <REQUEST>
    <CONTENT>
    <DEVICE>
    <IP>192.168.33.254</IP>
    <MAC>00:50:56:e0:53:4d</MAC>
    <NETPORTVENDOR>VMware</NETPORTVENDOR>
    </DEVICE>
    <MODULEVERSION>2.3</MODULEVERSION>
    <PROCESSNUMBER>1</PROCESSNUMBER>
    </CONTENT>
    <DEVICEID>foo</DEVICEID>
    <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    mais j'ai une erreur :

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

    ou est l'erreur? je vois pas!!!!
    L'erreur vient de ce que vous avez la concaténation de plusieurs document XML et lorsque le parseur arrive à la fin du premier document, il râle d'y trouver autre chose que rien. Dit autrement, si vous voulez utiliser un parseur XML, il faut vous assurer que vous lui donner du XML bien formé.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    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
    m'enfin!!!! y'a qu'un document dans ce fichier.xml!

    j'ai plusieurs balises : <REQUEST> c'est ça le problème?

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    m'enfin!!!! y'a qu'un document dans ce fichier.xml!

    j'ai plusieurs balises : <REQUEST> c'est ça le problème?
    Si cela vous fait plaisir de traduire le problème ainsi...
    En XML, on parle de document construits avec un prologue ("<?xml version="1.0"..." en fait partie) et un élément "racine"...
    Et avant de jouer avec des fichiers qui ressemblent a du XML, prendre le temps de chercher sur Internet un tuto qui vous raconte à quoi çà ressemble n'est pas un luxe. Cà déjà de comprendre les messages d'erreurs comme: "XML declaration allowed only at the start of the document" qui parle de bien de "document".
    Donc si vous ne savez pas ce que c'est, çà ne vous aide pas. Mais ouvrir un tuto. histoire de se retrouver moins bête, c'est pas si compliqué.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    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 rajouté une ligne <?xml etc...... en tête du document mais ça ne change rien!!! j'ai beau regarder la doc!!!!
    j'ai toujours l'erreur :
    lxml.etree.XMLSyntaxError: Extra content at the end of the document, line 15, column 1


    la ligne 15 est la ligne en gras :

    <?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>
    <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>

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Un document, c'est par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?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>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 462
    Points : 9 249
    Points
    9 249
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Un document XML a une structure arborescente, dont chaque branche commence par un <tag> et finit par un </tag>

    Ici, le document XML commence par <REQUEST> et se termine par </REQUEST>. Ce qui suit est ANORMAL pour un document XML => d'où l'erreur, qui est d'ailleurs très clairement formulée.

    En conséquence, quand on lit toutes les lignes du fichier, il faut repérer les débuts avec ligne=="<REQUEST>" et les fins avec ligne=="</REQUEST>" pour traiter chacun des documents XML contenus dans le fichier texte.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  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 trouvé!!!

    il faut une balise racine au début et une qui se ferme à la fin

  11. #11
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    il faut une balise racine au début et une qui se ferme à la fin
    De toutes façons, il va falloir lire tout le fichier ligne à ligne, pour trouver et supprimer celles contenant des <?xml... superflus.
    A chaque suppression, ce qui aura été lu est un document XML.
    Ajouter un tag au début et à la fin est une solution pour avoir un seul document.
    Mais de toutes façons les informations qui vous intéressent sont à extraire de chaque document.
    A vous de choisir comment résoudre le problème.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  12. #12
    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
    hello,

    j'ai utilisé des commandes shell pour supprimer les lignes ?xml etc........ et ajouter une balise racine en tête et en fin de fichier.
    je vais utiliser XPath pour récupérer les données dans un programme Python (parait que ça fonctionne!!!) et je pourrai formater mon fichier en sortie

    est ce que c'est bon? je connais rien à XPath!!
    merci

  13. #13
    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
    bonjour,

    je cherche une doc pour utiliser XPath dans Python
    je ne connais rien à XPath ni à Python!!!

    je veux extraire des données d'un fichier XML afin de construire un aurez fichier.
    est ce le meilleur moyen ? que me conseillez vous?

    merci

  14. #14
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par trazomtg Voir le message
    je cherche une doc pour utiliser XPath dans Python
    je ne connais rien à XPath ni à Python!!!
    Si vous ne connaissez rien à Python, il faut commencer par ouvrir un tuto. et apprendre.
    Une fois que vous serez plus à l'aise avec le langage, pour récupérer des informations via XPath avec Python, la lecture de la documentation d'ElementTree et de ses exemples est un bon début.

    Si vous connaissiez un peu Python, le format des fichiers que vous avez montré est assez simple.
    Lire le fichier ligne à ligne, filtrer celles qui commencent par les tags qui vous intéressent, récupérer l'information qu'il y a dedans, ... sont des opérations qui utilisent les fonctionnalités de bases des chaînes de caractères.
    Inutile de connaître XPath ou XML pour faire çà.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  15. #15
    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 XML XPath et Python
    Bonjour,

    j'ai un fichier XML
    je voudrais extraire des données de ce fichier à l'ai de XPath dans un programmer Python, pour construire un autre fichier texte.
    est ce possible?

    comment faire?
    je ne connais rien à XPath ..... ni à Python
    merci
    T

  16. #16
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 823
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 823
    Points : 7 119
    Points
    7 119
    Par défaut
    comment faire?
    je ne connais rien à XPath ..... ni à Python
    wiztricks a été suffisamment clair pourtant, nous ne donnons pas de code tout fait, il faut faire votre recherche...

    Apprenez python, puis l'existence de modules permettant d'analyser un fichier XML, seul moyen de créer quelque chose.

    Si vous ne souhaitez faire aucune recherche, il faut rendre visite à un professionnel, le coût du travail sera d'une autre forme.
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  17. #17
    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 Python et Xpath
    bonjour,

    j'ai un fichier text issu d'un fichier XML et je eux récupérer certains champs.
    j'ai fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    from lxml import etree
        with open('/fichier.xml') as f:
            t = etree.parse(f)
     
    for HOSTS in t.xpath("/HOSTS/REQUEST/CONTENT/DEVICE/*"):
        print HOSTS


    et j'ai cette erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    [root@CentOS-Virtual Informatique]# python hello.py
      File "hello.py", 
        with open('/fichier.xml') as f:
        ^
    IndentationError: unexpected indent
    je n'arrive pas à trouver l'erreur!!!!merci pour votre aide

  18. #18
    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 avancé car j'ai modifié mon fichier python:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import os
    os.system('grep -v "^<?xml" /text.xml > /fichier.xml')
     
    os.system('sed -i ""1i"<"Ligne">""" /fichier.xml')
    os.system('echo """<"/Ligne">""" >>/fichier.xml')
     
    from lxml import etree
    with open('/fichier.xml') as f:
        t = etree.parse(f)
     
    for ip in t.xpath('/REQUEST/CONTENT/DEVICE/*'):
        print ip
    je n'ai plus d'erreur MAIS je n'ai rien qui s'affiche à l'écran avec le print ip

    merci pour votre aide.
    T.

  19. #19
    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
    si je mets : print(ip) à la place j'obtiens:

    <Element IP at 0x7fe7370b2370>
    <Element MAC at 0x7fe7370b23c0>
    <Element NETPORTVENDOR at 0x7fe7370b2410>
    <Element DNSHOSTNAME at 0x7fe7370b2460>
    <Element IP at 0x7fe7370b24b0>
    <Element MAC at 0x7fe7370b2500>
    <Element NETPORTVENDOR at 0x7fe7370b2550>
    <Element DNSHOSTNAME at 0x7fe7370b25a0>
    <Element IP at 0x7fe7370b25f0>
    <Element IP at 0x7fe7370b2640>
    <Element MAC at 0x7fe7370b2690>
    <Element NETPORTVENDOR at 0x7fe7370b26e0>

    ce n'est pas ce que je veux. je veux récupérer la valeur de ip

    merci pour votre aide

  20. #20
    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 mon petit prog :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    import os
    os.system('grep -v "^<?xml" /text.xml > /fichier.xml')
     
    os.system('sed -i ""1i"<"Ligne">""" /fichier.xml')
    os.system('echo """<"/Ligne">""" >>/fichier.xml')
     
    from lxml import etree
    with open('/fichier.xml') as f:
        t = etree.parse(f)
     
    for ip in t.xpath('/Ligne/REQUEST/CONTENT/DEVICE/*'):
        print(ip)
    voila le fichier fichier.xml:

    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
    <Ligne>
    <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>
    <REQUEST>
      <CONTENT>
        <DEVICE>
          <DNSHOSTNAME>gateway</DNSHOSTNAME>
          <IP>192.168.33.2</IP>
          <MAC>00:50:56:f1:50:d0</MAC>
          <NETPORTVENDOR>VMware</NETPORTVENDOR>
        </DEVICE>
        <MODULEVERSION>2.3</MODULEVERSION>
        <PROCESSNUMBER>1</PROCESSNUMBER>
      </CONTENT>
      <DEVICEID>foo</DEVICEID>
      <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>
    <REQUEST>
      <CONTENT>
        <DEVICE>
          <DNSHOSTNAME>CentOS-Virtual</DNSHOSTNAME>
          <IP>192.168.33.128</IP>
        </DEVICE>
        <MODULEVERSION>2.3</MODULEVERSION>
        <PROCESSNUMBER>1</PROCESSNUMBER>
      </CONTENT>
      <DEVICEID>foo</DEVICEID>
      <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>
    <REQUEST>
      <CONTENT>
        <DEVICE>
          <IP>192.168.33.254</IP>
          <MAC>00:50:56:e0:53:4d</MAC>
          <NETPORTVENDOR>VMware</NETPORTVENDOR>
        </DEVICE>
        <MODULEVERSION>2.3</MODULEVERSION>
        <PROCESSNUMBER>1</PROCESSNUMBER>
      </CONTENT>
      <DEVICEID>foo</DEVICEID>
      <QUERY>NETDISCOVERY</QUERY>
    </REQUEST>
    </Ligne>
    et voila le resultat!!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    [root@CentOS-Virtual Informatique]# python hello.py
    <Element IP at 0x7f29ebaa1370>
    <Element MAC at 0x7f29ebaa13c0>
    <Element NETPORTVENDOR at 0x7f29ebaa1410>
    <Element DNSHOSTNAME at 0x7f29ebaa1460>
    <Element IP at 0x7f29ebaa14b0>
    <Element MAC at 0x7f29ebaa1500>
    <Element NETPORTVENDOR at 0x7f29ebaa1550>
    <Element DNSHOSTNAME at 0x7f29ebaa15a0>
    <Element IP at 0x7f29ebaa15f0>
    <Element IP at 0x7f29ebaa1640>
    <Element MAC at 0x7f29ebaa1690>
    <Element NETPORTVENDOR at 0x7f29ebaa16e0>
    comment récupérer les valeurs de IP MAC NETPORTVENDOR etc......
    merci

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

Discussions similaires

  1. CORBA & PYTHON
    Par stan91stan dans le forum CORBA
    Réponses: 5
    Dernier message: 10/06/2004, 12h32
  2. [XPath] Position d'un élément
    Par ovh dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 07/04/2003, 15h26
  3. sum(XPATH) retourne NaN
    Par TOM-Z dans le forum XMLRAD
    Réponses: 4
    Dernier message: 19/03/2003, 13h48
  4. XPath: intersection de chemins
    Par aldo047 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 13/03/2003, 10h30
  5. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

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