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 :

xml mon ami!


Sujet :

Python

  1. #1
    Membre habitué
    Homme Profil pro
    Arpette en Mécatro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Arpette en Mécatro
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut xml mon ami!
    Bonjour,

    Je suis en train developer un Post-Processeur.
    Je dois pour cela, extraire les données d'un fichier XML pour les traitées.
    voici mon fichier XML (enfin une partie):

    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
    -
     <stations>
    - <!--  station object will be created by Simulation Module 
      --> 
    - <station id="1" deck="1">
    + <waypoint id="1">
      <property stringid="type">"APPROACH"</property> 
      <dof_values>31000 -2500 1.5707963267948966 1000 -1.6923682153766813 0.56290552277759853 -4.086660849964746711 2.8811483161538476 -2.6512325815880873 -1.0162994104609477 -522.90334664874217 -295.3580715475473 -159.0127935173341 7.4987989133092894e-033 -1.2246467991473276e-016 1.5707963267948968</dof_values> 
      </waypoint>
    + <waypoint id="2">
      <property stringid="type">""</property> 
      <dof_values>31000 -2500 1.5707963267948966 1000 -1.6923682153766813 0.56290552277759853 -5.000660849964746711 2.8811483161538476 -2.6512325815880873 -1.0162994104609477 -522.90334664874217 -295.3580715475473 -159.0127935173341 7.4987989133092894e-033 -1.2246467991473276e-016 1.5707963267948968</dof_values> 
      </waypoint>
    - <waypoint id="3">
      <property stringid="type">""</property> 
      <dof_values>31000 -2500 1.5707963267948966 1000 -1.6923682153766813 0.56290552277759853 -0.086660849964746711 7.1111483161538476 -2.6512325815880873 -1.0162994104609477 -522.90334664874217 -295.3580715475473 -159.0127935173341 7.4987989133092894e-033 -1.2246467991473276e-016 1.5707963267948968</dof_values>
    Ce n'est pas mon metier mais comme j'aimerais être bon programmeur quand même
    voici l'archtecture que je souhaite: (attention c'est là que les explications commence)

    J'aimerais un système de poupées russes pour rechercher LA balise "stationS", si il la trouve, il rentre dedans pour chercher LES balises "sation"
    si il les trouve, il rentre par exemple dans la première pour chercher les waypoints etc...
    pour enfin acceder au valeurs de la balise "dof value".

    J'utilise le module "mini dom", j'ai reussi à extraire les valeurs de la balise "dof value" et à les traiter ( mais toute les balises "dof value" du XML).
    je compte faire un objet par type de balise ( il risque d'y avoir facilement 70 "sation" par XML, donc plein de "waypoint" et encore plus de "dof value")

    Mon vrai problème c'est de dire à mon programme par exemple :
    " si tu trouves des "station" dans "stationS", tu ne rentres QUE dans la n°1, tu fais ce que tu as à faire, tu ressorts, tu passes à la n°2 etc...."
    en terme de " code pur" je suis perdu.

    Merci d'avance

    ps : Pourvu que mes explications soit claire.

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 307
    Par défaut
    Salut,

    Qu'est-ce que tu appelles la première station ?

    celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <station id="1" deck="1">
    donc l'id 1 et ses trois waypoint dans ton exemple

    ou bien ceci:
    pour chaque station trouvée ?

  3. #3
    Membre habitué
    Homme Profil pro
    Arpette en Mécatro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Arpette en Mécatro
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    La première station est:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <station id="1" deck="1">
    qui elle contient des "waypoint" qui eux contiennent des " dof_value"

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

    On peut utiliser les fonctionnalités xpath du module xml.etree.ElementTree:

    En gros, ça donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XML = '''le contenu de votre fichier XML'''
    import xml.etree.ElementTree as et
    tree = et.fromstring(XML)
    for station in tree.findall("./station/[@id='1']"):
        assert int(station.attrib['id']) == 1:
        for waypoint in station.findall('./waypoint'):
             print (waypoint)
    Le plus complique est d'arriver a construire les formules XPath!

    En général, je préfère créer des class Station, Waypoint et les instancier a la lecture du fichier XML.
    C'est "plus" de code pour faire le mapping, mais ça permet de définir attributs et structure suivant la logique et les besoins des traitements. Subir la structure du fichier XML n'est pas bon, surtout si elle évolue.

    - W
    edit: complexifie le xpath pour le fun.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre habitué
    Homme Profil pro
    Arpette en Mécatro
    Inscrit en
    Janvier 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Arpette en Mécatro
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2014
    Messages : 9
    Par défaut
    OK.
    Je vais suivre ton conseille et créé une classe par balise.


Discussions similaires

  1. sql mon ami. problème sur une syntaxe
    Par sebinator dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 16/07/2008, 17h38
  2. Ajax et XML. Mon script ne fonctionne pas.
    Par Dougui_bzh dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/07/2008, 09h04
  3. pthread.h mon ami
    Par Stevie Wonder dans le forum Réseau
    Réponses: 13
    Dernier message: 02/11/2006, 12h14
  4. ZERS mon Ami
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/09/2006, 15h54

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