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 xml file


Sujet :

R

  1. #1
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut Lire xml file
    Bonjour,

    Je pense que mon probleme doit être simple pour quelqu un qui connait bien R et xml, mais cela fait bien 3 heures que je galère ...

    j ai un fichier xml contenant des données de pluie :

    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
    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
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!-- =======================================================
     
     Inputtype:     
     Inputversion:  1.0
     Outputtype:    EA XML Time Series Exchange Format
     Outputversion: 1.0
     
    ======================================================== -->
     
    <EATimeSeriesDataExchangeFormat
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns="http://www.environment-agency.gov.uk/XMLSchemas/EATimeSeriesDataExchangeFormat"
           xmlns:md="http://www.environment-agency.gov.uk/XMLSchemas/EAMetadataFormat"
           xsi:schemaLocation="http://www.environment-agency.gov.uk/XMLSchemas/EATimeSeriesDataExchangeFormat EATimeSeriesDataExchangeFormat.xsd <a href="http://www.environment-agency.gov.uk/XMLSchemas/EAMetadataFormat" target="_blank">http://www.environment-agency.gov.uk...MetadataFormat</a> EAMetadata.xsd">
     <md:Publisher>Environment Agency</md:Publisher>
     <md:Source>WISKI</md:Source>
     <md:Date>2014-09-18</md:Date>
     <md:Time>14:13:56</md:Time>
     <md:Identifier>EAMERCTRXS23</md:Identifier>
     <!-- Generated by WISKI - this document follows the recommended 
          guidance issued in the Plain English description of the 
          Environment Agency's Time-Series Data Exchange Format (version 1.1.2) -->
     <Station stationReference="4321004SC"
              stationName="CANNINGS TBR"
              region="South West"
              ngr="SU0508962158"
              ExternalIdentifier="335169">
      <!-- Waters: === -->
      <SetofValues parameter="Rainfall" qualifier="Tipping Bucket Raingauge"
                   dataType="Total"
                   period="Unspecified"
                   units="mm"
                   startDate="2009-01-01"
                   startTime="00:00:00"
                   endDate="2014-09-18"
                   endTime="23:59:00">
       <!-- WISKI time series name: CANNINGS TBR / RE / 4321004SC.RE.15.Total
                  parameter:        Rainfall
                  qualifier:        Tipping Bucket -->
       <Value date="2009-01-01" time="00:15:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="00:30:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="00:45:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="01:00:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="01:15:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="01:30:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="01:45:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="02:00:00" flag1="4">0</Value>
       <Value date="2009-01-01" time="02:15:00" flag1="4">0</Value>

    Je voudrais simplement lire les dates et les données de pluie et les mettre dans un data.frame.

    En m appuyant sur un exemple trouvé ici J ai bien essayé d ecrire quelque chose, mais ma session R, ne fait que se crasher après x min, pour je ne sais quelle raison (le fichier fait 38,218 KB)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    require(XML)
    rm(list=ls())
    xmlfile <- xmlTreeParse("C:/Users/yce/Desktop/TBR Site listing rk/sample files/15min sample..xml")
    xmltop=xmlRoot(xmlfile)
    plantcat <- xmlSApply(xmltop, function(x) xmlSApply(x, xmlValue))
    Ce que je ne comprends pas trop non plus c'est que xmlfile et xmltop semblent faire d'après R studio 1,9 Gb ...

    Je suis un peu perdu ...

    Est ce que quelqu un pourrait me donner un coup de main pour arriver a extraire les donnees et produire un data.frame du style Date+heure, value

    Merci.

    Slumpy

  2. #2
    Membre régulier
    Inscrit en
    Mars 2006
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 342
    Points : 107
    Points
    107
    Par défaut
    Bonjour,

    Bon apres x heures/jours, j arrive enfin a lire les attributs de l'element Value ainsi que sa valeur. Neanmoins mon code est super lent ...

    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
    library(XML)
    gc()
    rm(list=ls())
    xmlfile <- xmlParse("C:/Users/yce/Desktop/TBR Site listing rk/sample files/15min sample..xml")
    xmlValues<-getNodeSet(xmlfile, "/d:EATimeSeriesDataExchangeFormat/d:Station/d:SetofValues/d:Value",
                 c(d="http://www.environment-agency.gov.uk/XMLSchemas/EATimeSeriesDataExchangeFormat"))
     
    for(i in 1:length(xmlValues)){
      adate<-xmlGetAttr(xmlValues[[i]], "date")
      atime<-xmlGetAttr(xmlValues[[i]], "time")
      aflag1<-xmlGetAttr(xmlValues[[i]], "flag1")
      arain<-as.numeric(xmlSApply(xmlValues[[i]], xmlValue))
      if(i==1){
        df<-data.frame(adate,atime,arain,aflag1)
      } else {
        df<-rbind(df,data.frame(adate,atime,arain,aflag1))
      }
    }
    Je suis sur qu'il y a un moyen d'eviter cette boucle for, mais je n'y arrive pas ...

    QUelqu un aurait une idee ?

    Merci.

Discussions similaires

  1. [XML file]Lecture - ecriture :Bienvenue à votre imagination
    Par Terminator dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 27/04/2006, 22h53
  2. [Quartz][Tomcat] Jobs.xml file not found exception
    Par Arnaud Giuliani dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 05/08/2005, 09h20
  3. Lire XML avec ASP
    Par Tops dans le forum ASP
    Réponses: 4
    Dernier message: 04/04/2005, 15h40
  4. The XML file cannot be displayed
    Par UVCR dans le forum XMLRAD
    Réponses: 2
    Dernier message: 08/03/2005, 16h26
  5. Xml file system storage
    Par sebA dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 30/09/2004, 07h49

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