2015-10-21 2 views
0

У меня есть XML-файл в следующемR, как читать XML-файл

<?xml version="1.0" encoding="UTF-8" ?> 
<s_observation> 
    <observation datetime="2014-09-01T00:00:00Z"> 
    <station id="06179" lat="49.44700" lon="18.78123"> 
     <precipitation>0.0</precipitation> 
    </station> 
    <station id="06200" lat="49.29720" lon="18.78431"> 
     <precipitation>0.0</precipitation> 
     <discharge>10.450</discharge> 
    </station> 
</observation> 
</s_observation> 

Я способен правильно получить значение разряда и осаждения с помощью следующей команды:

tavola1 = xmlToDataFrame(nodes=getNodeSet(data1,"//s_observation/observation/station")) 

I не знаю, как получить значение «дата наблюдения» и «идентификатор станции». Вы можете мне помочь?

ответ

0

Предполагая, что этот xml файл находится в рабочем каталоге и с именем test.xml, следующие должны иллюстрировать различные функции/функциональность XML пакета и как получить observation datetime и station id от различных узлов:

library(XML) 

doc <- xmlTreeParse("test.xml") 
root <- xmlRoot(doc) 
obs_child <- xmlChildren(root) 

xmlAttrs(obs_child[[1]]) 
#    datetime 
# "2014-09-01T00:00:00Z" 

xmlGetAttr(obs_child[[1]], "datetime") 
# [1] "2014-09-01T00:00:00Z" 

stations <- xmlChildren(obs_child[[1]]) 
xmlAttrs(stations[[1]]) 
#  id  lat  lon 
# "06179" "49.44700" "18.78123" 
xmlGetAttr(stations[[1]], "id") 
# [1] "06179" 

xmlAttrs(stations[[2]]) 
#  id  lat  lon 
# "06200" "49.29720" "18.78431" 
xmlGetAttr(stations[[2]], "id") 
# [1] "06200" 
+0

Я сделал то, что ты предложил мне и работает! Еще одно уточнение, если мне нужно количество станций, чтобы, например, установить «для cicle», как я могу его получить? Благодаря! – Bebo

+0

@Bebo 'length (station)' должен работать в этом случае. – JasonAizkalns

Смежные вопросы