错误:XML内容似乎不是XML | R 3.1.0

47 xml parsing r

我试图获取此XML文件,但我无法.我检查了同一主题中的其他解决方案,但我无法理解.我是R新手.

> library(XML)
> fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
> doc <- xmlTreeParse(fileURL,useInternal=TRUE)
Run Code Online (Sandbox Code Playgroud)

错误:XML内容似乎不是XML:' https : //d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml '

你能帮忙吗?

Ric*_*ven 47

取出shttps

library(XML)

fileURL<-"https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
doc <- xmlTreeParse(sub("s", "", fileURL), useInternal = TRUE)
class(doc)
## [1] "XMLInternalDocument" "XMLAbstractDocument"
Run Code Online (Sandbox Code Playgroud)

  • 我收到错误:“未知 IO 错误无法加载外部实体” (2认同)

jdh*_*son 46

您可以使用RCurl获取内容,然后XML似乎能够处理它

library(XML)
library(RCurl)
fileURL <- "https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml"
xData <- getURL(fileURL)
doc <- xmlParse(xData)
Run Code Online (Sandbox Code Playgroud)

  • @ArpanGanguli使用`xData < - getURL(fileURL,ssl.verifypeer = FALSE)`.该错误在http://www.omegahat.org/RCurl/FAQ.html上有详细解释 (4认同)

小智 14

xmlTreeParse不支持https.

您可以使用getURL(from RCurl)加载数据然后解析它.


Atu*_*mar 6

答案在http://www.omegahat.net/RCurl/installed/RCurl/html/getURL.html。如果显示证书错误,关键是将ssl.verifyPeer = FALSE与getURL一起使用。

library (RCurl)
library (XML)
curlVersion()$features
curlVersion()$protocol
##These should show ssl and https. I can see these on windows 8.1 at least. 
##It may differ on other OSes.

temp <- getURL("https://d396qusza40orc.cloudfront.net/getdata%2Fdata%2Frestaurants.xml", ssl.verifyPeer=FALSE)
DFX <- xmlTreeParse(temp,useInternal = TRUE)
Run Code Online (Sandbox Code Playgroud)

如果libcurl函数未显示ssl或https功能,请检查是否将Rcurl与HTTPs结合使用