xml - 将 xml 解析为 R 数据框时出现问题?

标签 xml r

我是 R 新手用户,对 xml 格式绝对是新手,所以如果这个问题有明显的答案,请原谅我。

我正在尝试使用 xml 文件中的特定对象创建数据框,但有两个问题。

  1. 当我将 xml 文件内容从 URL 读入 R(我使用 htmlTreeParse)时,它似乎是一个长字符串,而不是我在 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)

最佳答案

该网站根据它认为询问的对象来调整其内容。 您需要要求它向您发送 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" 

关于xml - 将 xml 解析为 R 数据框时出现问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25942398/

相关文章:

xml - 未找到元素 ' ' 的声明

javascript - 在E4X中过滤2个不同的节点?

r - 计算 dplyr 中列子集中的行计数

r - Googleway R 替代路线

python - 在 Python 3 中使用 XPath 解析 XML

python - 使用 ElementTree 的递归 XML 解析 python

javascript - Magento:自定义文件中的 jQuery 不起作用

r - 如何用基础数据替换不等式条件

r - 如何定义 R 函数的参数类型?

R 在函数内使用临时选项设置