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

R Discussion :

Lire un fichier XML


Sujet :

R

  1. #1
    Membre à l'essai Avatar de Oblinky
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 12
    Points : 12
    Points
    12
    Par défaut Lire un fichier XML
    Bonjour,

    Ma question va peut-être vous paraître simpliste, mais je ne m'en sort pas...

    J'aimerais lire un fichier XML pour un faire un data frame dont les variables sont les extrémités de chaque branche.

    Par exemple pour un fichier dans ce goût là
    Code xml : 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
     
    <Dataset>
      <Datarecord>
        <Cat1>
          <Var11>phonographe</Var11> 
          <Var12>champ</Var12> 
          <Souscat>
            <Var111>triangle</Var111> 
          </Souscat>
        </Cat1>
        <Var2>loterie</Var2> 
      </Datarecord>
      <Datarecord>
        <Cat1>
          <Var12>plaine</Var12> 
        </Cat1>
      </Datarecord>
    </Dataset>

    j'aimerais obtenir un dataframe de la forme
    Var11 Var12 Var111 Var2
    phonographe champ triangle loterie
    NA plaine NA NA

    J'ai essayé avec xmlToDataFrame du package XML :
    Code R : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    donnees <- XML::xmlParse("~/exemple.xml")
    df <- XML::xmlToDataFrame(donnees)

    mais cela concatène les variables qui sont en dessous du 2ème noeud :
    Cat1 Var2
    phonographechamptriangle loterie
    plaine NA

    A noter que je dispose de la liste des noms variables que je peux facilement mettre en vecteur, mais je ne sais pas a priori à quel "niveau de profondeur" sont ces variables sont dans mon fichier XML.

    J'espère avoir été suffisamment clair.

    Je vous remercie d'avance !

  2. #2
    Membre à l'essai Avatar de Oblinky
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Voilà quelques jours que mon sujet est publié et pas encore de réponse...

    J'ai l'impression de demander quelque chose d'assez simple, mais peut-être est-ce beaucoup plus compliqué que ça.

    Peut-être aussi le titre n'est-il pas tout à fait adapté à ma question, ou peut-être n'ai-je pas posté dans la rubrique la plus adaptée.

    Dans tous les cas une réponse m'aiderait beaucoup, je suis toujours bloqué sur mon problème.

    Si vous êtes familier de R et du XML et que vous n'avez pas de solution à me donner, cela m'aiderait déjà à avancer si on me disait que le problème est plus compliqué qu'il n'y paraît.
    Si vous avez la moindre piste sur la méthode/le package/la fonction/les options à utiliser, n'hésitez pas.

  3. #3
    Membre éprouvé

    Homme Profil pro
    Cyber Security & AI
    Inscrit en
    Février 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Cyber Security & AI

    Informations forums :
    Inscription : Février 2009
    Messages : 506
    Points : 1 189
    Points
    1 189
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Après avoir essayé ton code, je me demande si tes données sont bien formatées.

    Je vois un niveau de trop dans ton dom, c'est celui qui correspond au noeud Cat1.

    En supprimant l'ensemble de ses balises (ouvrantes et fermantes), j'obtiens ce que tu cherches.

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <Dataset>
      <Datarecord>
          <Var11>phonographe</Var11> 
          <Var12>champ</Var12> 
          <Souscat>
            <Var111>triangle</Var111> 
          </Souscat>
        <Var2>loterie</Var2> 
      </Datarecord>
      <Datarecord>
          <Var12>plaine</Var12> 
      </Datarecord>
    </Dataset>

    Bien cordialement,

  4. #4
    Membre à l'essai Avatar de Oblinky
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2018
    Messages : 12
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci de ta réponse, mais le fichier XML que je donne en exemple est ici très court, mais les fichiers de données XML réels que je traite sont beaucoup plus gros, avec parfois jusqu'à 7 ou 8 nœuds imbriqués.

    Ce que je voudrais obtenir, c'est un data frame où les balises à l'extrémité des branches soient les variables, et où chaque <Datarecord>.....<Datarecord> corresponde à une observation.

    Je suis en train d'essayer d'autres pistes :
    • utiliser un script XSSL pour transformer mes fichiers XML complexes en fichiers XML "plats" où toutes les extrémités se retrouveraient au même niveau
    • utiliser read_xml du package xml2, qui ne fait pas directement un data frame mais des listes, mais qui au moins va au bout des branches

Discussions similaires

  1. Créer et lire un fichier xml
    Par Bruno1905 dans le forum C++Builder
    Réponses: 14
    Dernier message: 13/06/2007, 11h11
  2. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  3. [DOM XML] Lire un fichier xml
    Par axel-erator dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/12/2005, 22h36
  4. lire un fichier xml
    Par stephanie5 dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/11/2005, 16h34
  5. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52

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