我是新手R用户,对xml格式来说肯定是新手,所以如果这个问题有明显的答案,请原谅我。
我正在尝试使用xml文件中的特定对象创建数据框,并且有两个问题。
当我从URL读取xml文件内容到R(我使用htmlTreeParse)时,它似乎是一个长字符串,而不是我用xml文件看到的通常格式。我尝试使用其他网址,但没有遇到这个问题。这与#34; ?? @@@"系列有什么关系?在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)。
关于如何将xml内容分配给数据框,抓住它的某些部分并分配给不同的变量,我有点迷失。
到目前为止,我已经附上了我的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)
答案 0 :(得分: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"