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

Python Discussion :

Aide pour parser fichier XML


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 45
    Par défaut Aide pour parser fichier XML
    Bonjour tout le monde,

    Je me sens obligé de vous demandez de l'aide, voilà maintenant 6 heures que je ne sais pas comment me sortir de cette impasse

    Je dois parser un 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
    <?xml version="1.0" encoding="UTF-8"?>
    <Topologies>
        <Topology name="Serveur">
            <ConfigurationItems>
                <ConfigurationItem ID="hguytuytu" Label="yuyu" Type="unix">
                    <Attribute Name="DomainName" Label="DomainName" Type="class java.lang.String" Value="mtfgf" />
                    <ConfigurationItem ID="huikghjgh" Label="Intel(R)" Type="cpu">
                        <Attribute Name="Core number" Label="Core number" Type="cldfgg" Value="" />
                    </ConfigurationItem>
                    <ConfigurationItem ID="dfgdfgdg" Label="Production" Type="fgdgdfg">
                        <Attribute Name="ddfgl" Label="Didfgbel" Type="cdfgdfg" Value="fdgdfg" />
                    </ConfigurationItem>
    	    </ConfigurationItem>
    	 </ConfigurationItems/>
         </Topology>
    </Topologies>
    Le problème c'est que je n'ai jamais fait de python, alors j'ai fait beaucoup de recherches, j'ai entendu parler de DOM et aussi lxml, le problème c'est que dans mon XML que je ne peux pas modifier, j'ai "configurationItem" qui est le parent des "attribute", mais j'ai aussi d'autre "configurationItem" mais qui eux aussi sont fils du "configurationItem" parent, je ne sais pas si je me fais bien comprendre...

    En gros j'aimerais récupérer tous les attributs de chaque éléments.

    Si quelqu'un peut m'aider...

    Cordialement.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,
    Pour "parser" un fichier XML, vous pouvez utiliser le module elementTree qui est inclus dans les bibliothèques standards. La documentation inclus un tutoriel qui peut vous aider a démarrer.
    Cela vous permettra d’accéder facilement aux différents éléments/valeurs du fichiers XML.

    Si vous rencontrez des difficultés, postez du code, montrez ce que vous faites: il y aura du monde pour s'empresser a vous aider.
    Pour l'instant, on ne peut que compatir mais comme ça ne vous aidera pas.... ce sera un grand silence.

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

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 45
    Par défaut
    Merci beaucoup pour le lien, je bosse ça se soir, je vous tiendrai au courant,

    Cordialement.

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Décembre 2011
    Messages : 45
    Par défaut
    Bonjour,

    Bon je commence a mieux comprendre, sauf que maudis comme je suis, y'a un truc qui m'échappe, j'ai une erreur sur une portion de code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/usr/bin/python
    import xml.etree.ElementTree as ET
    rootString = "ConfigurationItem"
    tree = ET.parse('Serveurs Unix.xml')
    root = ET.fromstring(rootString)
    Donc si je comprends bien le tuto, au lieu de définir la racine directement avec la méthode getroot, je peux la définir à partir d'un string, pourtant ça ne marche pas, j'ai ça comme erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
      File "scriptXML.py", line 5, in <module>
        root = ET.fromstring(rootString)
      File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 964, in XML
        return parser.close()
      File "/usr/lib64/python2.6/xml/etree/ElementTree.py", line 1254, in close
        self._parser.Parse("", 1) # end of data
    xml.parsers.expat.ExpatError: syntax error: line 1, column 0
    Voilà j'ai besoin de votre aide,

    Cordialement.

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Salut,

    Jouez avec ce bout de code:
    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
    XML = '''<?xml version="1.0" encoding="UTF-8"?>
    <Topologies>
        <Topology name="Serveur">
            <ConfigurationItems>
                <ConfigurationItem ID="hguytuytu" Label="yuyu" Type="unix">
                    <Attribute Name="DomainName" Label="DomainName" Type="class java.lang.String" Value="mtfgf" />
                    <ConfigurationItem ID="huikghjgh" Label="Intel(R)" Type="cpu">
                        <Attribute Name="Core number" Label="Core number" Type="cldfgg" Value="" />
                    </ConfigurationItem>
                    <ConfigurationItem ID="dfgdfgdg" Label="Production" Type="fgdgdfg">
                        <Attribute Name="ddfgl" Label="Didfgbel" Type="cdfgdfg" Value="fdgdfg" />
                    </ConfigurationItem>
                </ConfigurationItem>
             </ConfigurationItems>
         </Topology>
    </Topologies>'''
     
    import xml.etree.ElementTree as et
     
    root = et.fromstring(XML)
    for item in root.findall(".//ConfigurationItems/ConfigurationItem"):
        print (item)
        for e in item:
            print (e.tag, e.attrib)
    e.attrib est juste un dict.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    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 741
    Par défaut
    Citation Envoyé par kinder540 Voir le message
    mais je ne sais pas pourquoi il me met sort une erreur, peut être que l'attribut "value" n'est pas dans tous les champs, n'y aurait-il pas une commande qui permet de faire une recherche ?
    Comment ça peut être?
    Dans le XML que vous montrez, "Value" n'est attribut que de l'element "Attribute".
    root.findall(...) fait déjà une recherche non?
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Aide Pour Parser XML JAVA
    Par linuxien_62 dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 23/10/2013, 14h09
  2. Réponses: 5
    Dernier message: 19/10/2008, 18h33
  3. Réponses: 1
    Dernier message: 09/10/2007, 19h31
  4. Besoin d'aide lié à un fichier xml et un tableau a charger..
    Par jjs dans le forum Bases de données
    Réponses: 2
    Dernier message: 28/07/2005, 14h03

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