2014-09-19 26 views
2

我是新手R用戶,絕對是新的XML格式,所以請原諒我,如果這個問題有明顯的答案。解析xml到R數據框的問題?

我想從xml文件中創建具有特定對象的數據框,並有兩個問題。

  1. 當我從URL讀取到R(我用htmlTreeParse)的XML文件的內容,這似乎是一個很長的字符串,而不是通常的格式,我的XML文件見。我嘗試過使用其他網址,並沒有這個問題。這是否與xml內容中的「?? @@@」系列有關? (網址:http://opentrip.atlantaregion.com/otp-rest-servlet/ws/plan?&fromPlace=33.87725673930016%2C-84.46014404296875&toPlace=33.74946419232578%2C-84.38873291015625&time=1%3A13pm&date=03-21-2014&mode=TRANSIT%2CWALK&maxWalkDistance=750&arriveBy=false&showIntermediateStops=false&itinIndex=0)。

  2. 我對如何將xml內容分配給數據框有點遺憾,抓住它的某些部分並分配給不同的變量。

我附上了我的R代碼,以防萬一它有幫助。

謝謝你,我很感謝你們所有人的洞見!如果答案非常明顯,我再次表示歉意。

我的R代碼裏面:

xml.url <- "http://opentrip.atlantaregion.com/otp-rest-servlet/ws/plan?&fromPlace=33.87725673930016%2C-84.46014404296875&toPlace=33.74946419232578%2C-84.38873291015625&time=1%3A13pm&date=03-21-2014&mode=TRANSIT%2CWALK&maxWalkDistance=750&arriveBy=false&showIntermediateStops=false&itinIndex=0" 

xmlfile <- htmlTreeParse(xml.url) 

回答

3

網站依賴於它的人認爲是要求調整其內容。 您需要讓它向您發送xml內容。你也可能需要給它一個用戶代理。這可以用RCurl

library(XML) 
library(RCurl) 
xml.url <- "http://opentrip.atlantaregion.com/otp-rest-servlet/ws/plan?&fromPlace=33.87725673930016%2C-84.46014404296875&toPlace=33.74946419232578%2C-84.38873291015625&time=1%3A13pm&date=03-21-2014&mode=TRANSIT%2CWALK&maxWalkDistance=750&arriveBy=false&showIntermediateStops=false&itinIndex=0" 
myAgent <- "Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0" 
myAccept <- "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" 
library(XML) 
library(RCurl) 
xData <- getURL(xml.url, useragent = myAgent, encoding = "UTF-8" 
       ,httpheader = c(Accept = myAccept)) 
xmlfile <- htmlParse(xData) #, encoding = "UTF8") 

做相反,如果你不問它XML就會返回你JSON,您可以使用RJSONIO或類似的東西它解析:

library(RJSONIO) 
jData <- fromJSON(xml.url) 
> names(jData) 
[1] "requestParameters" "plan"    "error"    "debug"    
> jData$requestParameters 
date         mode 
"03-21-2014"       "TRANSIT,WALK" 
arriveBy     showIntermediateStops 
"false"        "false" 
fromPlace        itinIndex 
"33.87725673930016,-84.46014404296875"         "0" 
toPlace         time 
"33.74946419232578,-84.38873291015625"        "1:13pm" 
maxWalkDistance 
"750" 
+0

我不能告訴你如何這是有幫助的!我不知道RJSONIO/JSON包存在!謝謝謝謝。 – emorystudent 2014-09-19 22:26:18

+0

樂意幫忙.. – jdharrison 2014-09-19 22:48:55